在看源码过程中,发现可以好好利用git log来查看和搜索提交历史,本文特此mark下notes。大部分内容转载自git log的常见用法

官方文档

https://git-scm.com/docs/git-log

man git-log

基本用法

git log

使用git log命令,什么参数都没有的话,会以下面的格式输出所有的日志。如果日志特别多的话,在git bash中,按向下键来查看更多,按q键退出查看日志。

git log --oneline

--oneline参数可以将每条日志的输出为一行,如果日志比较多的话,用这个参数能够使结果看起来比较醒目。

git log -[length]

-[length]参数用于指定显示多少条日志


这里面使用-2来指定显示前两条日志

git log --skip=[skip]

--skip=[skip]参数用来指定跳过前几条日志。下面的命令用来查看第二和第三条日志

git log --pretty=raw

--pretty=raw会显示出关于每次提交的更多信息。


输出的信息中包括提交ID,文件树ID,父提交ID,作者和提交者,这些信息都非常有用。

git log -p

-p参数输出的信息会更多,用来显示提交的改动记录,相当于多次使用git show [commit_id]的结果。

git log --graph

--graph参数会绘制提交的线索,如果有合并的话,也会更清晰地显示出来

这样可以查看哪几个commit是一块提交的。

git log --decorate

--decorate参数用来显示一些相关的信息,如HEAD、分支名、tag名等。

git log --name-status

--name-status参数会带出每次提交对应的文件改动。

搜索git日志

通过作者搜索

有时候会从提交记录中查看一下自己(或某个人)的某次提交,git log命令可以很快地检索出这些信息

git log --author yourname

可以筛选出yourname用户提交的所有日志。这里的yourname可以包含通配符,从Author: zdk <zdk@menhoo.com>的信息中匹配信息。

通过关键字搜索

git log --grep keywords
可以从提交的关键字中抓取匹配的commit项。

通过文件名搜索

有时候,我们想查某个文件(file or folder)的所有修改记录,可以根据文件名来过滤一下只跟这个文件有关的提交。
git log -- A

查看两个tag之间的commit

git log --oneline v3.11..v3.12

Example

查看KVM目录下的commit

git log --oneline -- arch/x86/kvm/

查看vmx.c的commit

git log --oneline -- arch/x86/kvm/vmx/vmx.c
或者
git log -p -- arch/x86/kvm/vmx/vmx.c
然后关键字搜索,找到你想要的commit。


参考资料:

  1. How to show Git log history (i.e., all the related commits) for a sub directory of a Git repository
  2. git log的常见用法