git-gerrit-learning icon indicating copy to clipboard operation
git-gerrit-learning copied to clipboard

用 git log 发掘出各种真相

Open godkun opened this issue 7 years ago • 0 comments

git log 和 git status 的区别

  • git status 能让你检查工作目录和 stage 区的状态。

  • git log 只提供被 commithead 的一些历史信息。

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

如下图所示: image

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 , 作者名不需要精确匹配,只需要包含就行了。

还可以使用正则表达式. 下面的命令搜索 godkunkun 贡献的 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

只显示没有 mergecommit

git log --merges

显示 mergecommit

godkun avatar Jan 18 '19 15:01 godkun