用 git log 发掘出各种真相
git log 和 git status 的区别
-
git status能让你检查工作目录和stage区的状态。 -
git log只提供被commit到head的一些历史信息。
git log
git log 命令用来显示提交的快照, 能列出来你项目的历史。
使用默认格式
git log展示这个项目的commit历史,如果输出超过一屏, 可以使用空格键来展示下一屏, 或者按q推出。
git log --oneline
压缩每个 commit 到一行。
git log -p
可以看到每个 commit 具体修改了些什么, 输出包括了 git log 的信息、显示哪些文件被修改了,以及哪一行是新加的或者被删除了。
git log -p -2 : 查看最新的2次 commit 以及每次 commit 的内容变化。
git log --author="godkun"
搜索指定作者的 commit 。
git log --grep="yangkun"
搜索 commit 里面包含 yangkun 的日志展示出来,yangkun 可以是一个正则。
git log 1.txt
只显示指定文件的 commit 。
git log --graph --oneline
这个非常好用,--graph 会在最左边输出一些文本的符号,通过文本符号来更好的区分 commit 。
如下图所示:

git log --oneline master..dev
.. 符号可用于比较 branch 。 下面的例子展示了 dev 中有但是 master 中没有的 commit 。
比如:
git log --oneline master..dev
git log --after="2019-1-18"
使用 --after 或 --before 来按照日期筛选,还可以使用一个相对的时间,例如 yesterday 。
git log --after="yesterday"
如果看某个时间段的 commit 可以同时使用 --after 和 --before 。下面的例子显示 2018年12月1日 到 2019年01月1日 之间的 commit 。
git log --after="2018-12-1" --before="2019-01-01"
git log --author="godkun"
显示 godkun 贡献的 commit , 作者名不需要精确匹配,只需要包含就行了。
还可以使用正则表达式. 下面的命令搜索 godkun 和 kun 贡献的 commit 。
如:
git log --author="godkun\|kun"
注意这个 --author 不仅包含名还包含 email , 所以你可以用这个搜索 email 。
git log -S "yangkun"
这是根据 commit 提交信息的内容,获取对应的提交。如果你想使用正则表达式去匹配而不是字符串,那么你可以使用 -G 代替 -S 。
git log --grep="JRA-6"
按 commit 描述。例如,如果你的团队会在每个 commit 描述里面加上相关的 issue 号,你可以使用下面的命令查找跟某个 issue 相关的 commit ,还可以传入 -i 用来忽略大小写。
git log --no-merges
只显示没有 merge 的 commit 。
git log --merges
显示 merge 的 commit 。