Git中还有很多实用并且常用的小技巧,适当的使用可以提高我们的工作效率。但因为这些Tips比较琐碎,没法将它们归档到特定的主题下,于是我便整理到这里了——
git commit 选项
git commit -a
指令可以自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过git add
步骤。
git status 选项
git status
命令的输出十分详细,但其用语有些繁琐。 但是如果使用git status -s
命令或git status --short
命令,我们将得到一种格式更为紧凑的输出
git log 选项
git log --patch
:也可以简写成-p
,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 我们也可以限制显示的日志条目数量,例如使用-2
选项来只显示最近的两次提交。git log --stat
: 显示每次提交的简略统计信息,包括有几个文件修改、有几个文件删除等等。git log --pretty
:这个选项可以使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用,比如git log --pretty=oneline
会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有short
,full
和fuller
选项,它们展示信息的格式基本一致,但是详尽程度不一。git log --graph
:可以在日志旁以 ASCII 图形显示分支与合并历史git log --no-merges
:过滤掉"合并提交"的记录git log --merges
:之查看合并提交记录
git 别名
如果不想每次都输入完整的 Git 命令,可以通过 git config
文件来轻松地为每一个命令设置一个别名。格式如下
git config --global alias.<别名> <原名>
例如,在团队开发时我们经常要查看分支图,查看分支图的命令为
git log --oneline --graph --all
,但是每次都输入这么长的指令实在是太麻烦了,因此我们可以为其取一个别名——
git config --global alias.graph 'log --oneline --graph --all'
这样我们只需要输入git graph
就可以查看分支图了。
查看已经合并
git branch --merged
:查看哪些分支已经合并到当前分支git branch --no-merged
:查看所有包含未合并工作的分支git branch --merged master
:查看尚未合并到 master 的分支
公共祖先
在决定是否将两个分支合并前,我们可能需要先寻找两个分支的共同祖先,然后比较这个共同祖先和某一个分支的difference,最后在决定是否合并。
为进行这样的比较,我们可以采用下面三种方式——
- 先通过命令
git merge-base <branch1> <branch2>
获得commit_id,再使用git diff <commit_id>
- 直接使用
git diff $(git merge-base <branch1> <branch2>)
- 使用三点语法——
git diff <branch1>...<branch2>
,结果是branch2
的最新提交 和 公共祖先 之间差异。