总结一些常用的Git命令。

配置

1
2
3
4
5
6
7
8
9
# 列出所有配置信息
$ git config --list

# 编辑配置文件
$ git config -e

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

分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 列出所有本地分支
$ git branch

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

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

# 列出本地分支关联的远程分支
$ git branch -vv

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

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

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

# 删除远程分支
$ git push origin --delete [branch-name]

## 关联远程分支
$ git --set-upstream-to=origin/branch

# 取消关联远程分支
$ git unset

撤销管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 恢复暂存区的指定文件到工作区
$ git checkout [file]

# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]

# 恢复暂存区的所有文件到工作区
$ git checkout .

# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]

# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard [file]

# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]

# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

Diff

1
2
3
4
5
6
7
8
9
10
11
12
# 显示暂存区和工作区的差异
$ git diff

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

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

# 比较多个commit之间的差异
$ git diff commit1 commit2
$ git diff commit1 commit2:filename

fetch/pull/push

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下载远程仓库的所有变动
$ git fetch [remote]

# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all

标签管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 列出所有tag
$ git tag

# 新建一个tag在当前commit
$ git tag [tagName]

# 新建一个tag在指定commit
$ git tag [tagName] [commit]

# 创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -a [tagName] -m [description] [commit]

# 查看tag信息
$ git show [tagName]

# 删除本地tag
$ git tag -d [tagName]

# 提交指定tag
$ git push [remote] [tagName]

# 提交所有tag
$ git push [remote] --tags

# 删除远程tag
$ git push origin :refs/tags/[tagName]

# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tagName]

bug分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 保存当前没有commit的环境
$ git stash

# 上面的stash不会保存没有add的文件
$ git stash -u

# 恢复的同时把stash内容也删了
$ git stash pop

$ git stash list

$ git stash apply stash@{0}

$ git stash drop stash@{0}

其他

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 显示分支详情
$ git remote show origin

# 删除远程分支中已经不存在的分支
$ git remote prune origin

# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]

# 显示某次提交发生变化的文件
$ git show --name-only [commit]

# 查看某个commit的详情
$ git show [commit]

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

Contact

GitHub: https://github.com/ziwenxie
Blog: https://www.ziwenxie.site