git 常用命令小结

用了一段时间,把 git 的常规命令熟悉了一遍,稍微整理出来,方便后续查阅。

git 配置

全局配置文件位置:~/.gitconfig~/.config/git/config 文件
项目配置文件位置:.git/config

1
2
3
4
5
6
7
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

# 配置默认编辑器
git config --global core.editor emacs
# 检查配置信息
git config --list

远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 罗列远程仓库名(默认只有origin一个)
git remote
# 详细罗列远程仓库
git remote -v
# 查看远程仓库分支信息
git remote show origin
# 远程仓库重命名
git remote rename pb paul
# 移除远程仓库
git remote rm pb
# 添加远程仓库
git remote add pb https://github.com/paulboone/ticgit
# 拉取远程仓库
git fetch # git fetch origin
# 推送远程仓库
git push # git push origin master

仓库建立

1
2
3
4
# 获取远程仓库代码
git clone git://git.kernel.org/pub/scm/git/git.git
# 本地初始化仓库
git init

追踪文件

1
2
3
4
5
6
# 追踪所有文件
git add .
# 追踪单一文件
git add aa.txt
# 取消文件追踪
git reset HEAD aa.txt

文件还原

1
2
# 将文件还愿至上次提交状态
git checkout -- aa.txt

代码提交

1
2
3
4
5
6
# 默认提交,要求填写提交消息
git commit
# 带有消息的提交
git commit -m "fix bugs"
# 将所有修改的文件进行追踪并提交
git commit -am "fix bugs"

代码状态

1
2
3
4
# 默认格式
git status
# 紧凑格式
git status -s # --short

代码比较

1
2
3
4
5
6
# 查看尚未暂存的文件更新了哪些部分
git diff
# 查看已暂存的将要添加到下次提交里的内容
git diff --staged # 或 --cached
# 检查要提交的代码
git diff --check

提交历史

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 默认格式
git log
# 附带上每次修改的具体内容
git log -p
# 控制输出条数
git log -5
# 每条记录显示总结
git log --stat
# 显示效果(一行)
git log --pretty=oneline # 或 git log --oneline
# 显示图表
git log --graph
# 查阅某条记录详情
git show 300b5c

# 查看master分支,但不含feature1 分支
# 分支顺序无所谓
git log master ^feature1 # 支持多个分支
git log master not feature1 # 支持多个分支
git log master feature1.. # 只能两个分支

撤销操作

1
2
# 追加文件提交或修改上次提交消息
git commit --amend

移除文件

1
2
3
4
5
git rm aa.txt
# 如果该文件在暂存区,则需要加参数 -f
git rm -f aa.txt
# 如果仅仅是取消追踪
git rm --cached aa.txt

打标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 列出标签
git tag
# 列出标签(过滤)
git tag -l 'v1.8.5*' # --list
# 打轻量标签
git tag v1.4
# 打附注标签
git tag -a v1.4 -m 'my version 1.4' # --annotate
# 打附注标签(指定提交)
git tag -a v1.2 9fceb02
# 显示标签详情
git show v1.4

# 推送标签
git push origin v1.5
# 推送所有标签
git push origin --tags

分支操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 查看分支
git branch
# 查看分支(带有最后提交)
git branch -v
# 查看那些分支已经合并到主干(带有星号)
git branch --merged
# 查看那些分支未合并到主干
git branch --no-merged
# 切换分支
git checkout test
# 创建并切换到分支
git checkout -b test
# 创建并切换到分支(相当于下面两条命令)
git branch test
git checkout test
# 删除分支
git branch -d test
# 强行删除分支(如果分支代码没有被合并)
git branch -D test

变基

1
2
3
4
5
6
7
8
9
10
11
12
13
# 切换到需要变基分支
git checkout experiment
# 执行变基,提取特征
git rebase master
# 回到主干
git checkout master
# 代码合并
git merge experiment

# 或者
git rebase master experiment
git checkout master
git merge experiment

代码合并

1
2
3
4
# 将其他分支代码合并到当前分支
git merge test
# 退出合并
git merge --abort

储藏

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 储藏(追踪的代码)
git stash
# 储藏(追踪和未追踪的代码)
git stash -u
# 查看储藏记录
git stash list
# 提取最近一个储藏(储藏被删除)
git stash pop
# 提取最近一个储藏(储藏不被删除)
git stash apply
# 提取指定储藏(储藏不被删除)
git stash apply stash@{2}
# 删除指定储藏
git stash drop stash@{0}
# 把储藏保存为分支
git stash branch stash-test

查阅操作记录

1
git reflog

版本写法

1
2
3
4
5
6
7
8
9
10
# 当前最新提交
git show HEAD
# 上一次提交
git show HEAD~1
git show HEAD^
# 上两次提交
git show HEAD~2
git show HEAD^^
# 第一次提交
git show HEAD@{1}

打包

1
2
# 项目打包
git bundle create repo.bundle HEAD master

–END–