Git 思维导图

共 2682字,需浏览 6分钟

 ·

2021-08-16 03:11

bf593299ee9a314a0fc149c612dfc8a2.webp

作者:吴小龙同学

版本:V 0.0.1

"git add加到暂存区,我想撤销怎么搞?"

“这个 bug 不用改了,我修改的代码可以不要了,难道要把我修改的代码再改回去?”

"我想装个逼想知道我今天写了写了多少行代码,怎么看?"

想要解答以上问题,先简单了解“工作区”、“暂存区”、“本地仓库”、“远程仓库”四个概念。

工作区:你现在修改区域;

暂存区:通过命令git add把代码放到暂存区;

本地仓库:使用命令git commit提交代码并不是真的提上来了,而是放在本地仓库

远程仓库:git push才真的提交到远程仓库。

582714d0fac7c12641d75d897f186c20.webp

克隆仓库

# 下载一个项目和它的整个代码历史
$ git clone [url]

仓库配置

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

# 显示当前的Git配置
$ git config --list

查看工作区状态

# 显示有变更的文件
$ git status

# 状态简览
$ git status -s

查看提交记录

# 查看commit历史
$ git log

# 查看commit历史及每次commit发生文件变更的信息
$ git log --stat

# 查看某个文件的每一次diff
$ git log -p [file]

# 指定提交条目,且附带每次提交详细变化
$ git log -p -<n>

# 查看过去5次提交
$ git log -5 --pretty --oneline

# 查看当前分支的最近几次提交
$ git reflog

# 查看今天你写了多少行代码
$ git diff --shortstat "@{0 day ago}"

# 查看两个星期内的改动
$ git whatchanged --since='2 weeks ago'

对比文件变化

# 显示暂存区和工作区的差异
$ git diff

# 显示暂存区和上一个commit的差异
$ git diff --cached [file]

# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD

# 显示两次提交之间的差异
$ git diff [commit1-id] [commit2-id]

# 显示某次提交commit信息和修改内容
# 显示某次提交commit信息和修改内容
$ git show [commit-id]

# 显示某次提交commit信息
$ git show --name-only [commit-id]

# 显示某次提交时,某个文件的内容
$ git show [commit-id]:[filename]

添加文件到暂存区

# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区,包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前,都会要求确认
# 对于同一个文件的多处变化,可以实现分次提交
$ git add -p

提交到本地仓库

# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]

# 提交工作区自上次commit之后的变化,直接到仓库区
$ git commit -a

# 提交时显示所有diff信息
$ git commit -v

# 使用一次新的commit,替代本地仓库最新一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
$ git commit --amend -m [message]

# 重做上一次commit,并包括指定文件的新变化
$ git commit --amend [file1] [file2] ...

撤销

# 撤销暂存区某个文件到工作区
$ git reset HEAD <file>

# 撤销暂存区所有修改到工作区
$ git reset HEAD/git reset [file]

# 撤销工作区,不保留修改
$ git checkout <file>

# 撤销工作区所有修改
$ git checkout .

# 同时撤销暂存区和工作区,且不保留修改
$ git reset --hard

# 撤销本地仓库最新一次提交所有修改到工作区
$ git reset HEAD^

回退

# 回退本地仓库最新一次提交到暂存区
$ git reset --soft HEAD^

# 回退本地仓库最新一次提交,不保留暂存区和工作区
$ git reset --hard HEAD^

# 回退本地仓库n次提交
$ git reset --hard HEAD~n

# 回退到某次提交,不保留暂存区和工作区
$ git reset --hard [commit-id]

# 回退到某次提交,同时重置暂存区,但工作区不变
$ git reset [commit-id]

分支

# 列出所有本地分支
$ git branch -l

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]

# 切换到该分支
$ git checkout [branch-name]

# 新建一个分支,并切换到该分支
$ git checkout -b [branch-name]

# 新建一个分支,指向指定commit
$ git branch [branch-name] [commit]

# 新建一个分支,与指定的远程分支建立追踪关系
$ git branch --track [branch] [remote-branch]

# 设置跟踪远程分支
$ git branch -u <远程分支名> <本地分支名>

# 合并指定分支到当前分支
$ git merge [branch]

# 选择一个commit,合并进当前分支
$ git cherry-pick [commit-id]

# 删除本地分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
8bcf45b28382617d32f73ecbf804c3f1.webp
浏览 50
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐