git log是一个常用的git命令,用于查看git提交记录,常用的参数,也有复杂的参数,
多个参数跟命令结合能筛选出我们想要的日志信息,下面附上我自己常用的几条命令,
为了方便,下面例子中有些我直接给出查询的日志数量(命令中的数字)。
1:$: git log -n
用于查看最近n条commit记录,这个是默认格式,显示的内容包括完整的commit id哈希值、author、date、message
2:$: git log --stat -2
在1的基础上增加摘要内容(摘要会列出修改的文件以及每个文件中修改了多少行)
$: git log ----shortstat -2
在1的基础上增加摘要内容(只是统计并展示修改了多少内容儿不显示具体哪些文件做出了修改)
3:$: git log --name-only -1
在1的基础上展示已经修改的文件列表
4:$: git log -p -1
在1的基础上增加commit中,文件改动的详细改动内容。
5:$: git log --author=icehill -1
在1的基础上增加的用户筛选功能,筛选指定用户的提交,不是author参数后面的用户,不显示。
6:$: git log --since=1days
在1的基础上只显示最近某段内的提交记录
除了since,还有其他参数 ( --after , --util , --before),
可以有如下格式: xxxdays , xxxweeks , 2016-11-25 , 或 2 years 1 day 3 minutes ago
7:$: git log - -pretty=xxx
(1):该命令可以用来指定使用不同于默认格式的方式展示提交历史,后面的xxx表示具体的取值,
取值有:oneline , short , full , fuller 等
例如:
$: git log --pretty=oneline
执行该命令后会把提交历史的commit描述以及校验和 显示在同一行,并且省略默认格式下的其他内容
$: git log --pretty=short
执行该命令后,只是比默认的格式少了Data日期的描述
$: git log --pretty=full
执行该命令后,与默认的格式相比少了Data日期的描述,但是增加了commit 提交人信息
(2):也可以使用组合模式(注意format后面:之后不能留空格):
$: git log --pretty=format:"%an %h %s" -2
git log --pretty=format:"" -1
什么都不显示
上面的组合模式中,%an,%h,%s是占位符,详细的占位符以及含义如下: %H 提交对象(commit)的完整哈希字串 %h 提交对象的简短哈希字串 %T 树对象(tree)的完整哈希字串 %t 树对象的简短哈希字串 %P 父对象(parent)的完整哈希字串 %p 父对象的简短哈希字串 %an 作者(author)的名字 %ae 作者的电子邮件地址 %ad 作者修订日期(可以用 -date= 选项定制格式) %ar 作者修订日期,按多久以前的方式显示 %cn 提交者(committer)的名字 %ce 提交者的电子邮件地址 %cd 提交日期 %cr 提交日期,按多久以前的方式显示 %s 提交说明
8: $: git log --oneline -n
log后面直接跟–oneline时,显示短的校验和,并与提交描述显示在同一行
9:$: git log --grep=xxx
用于筛选指定信息xxx的提交记录
10: git log --date='format:%Y-%m-%d %H:%M:%S' -2
指定时间格式输出
11: 以上命令也可以进行组合,用于筛选,例如
$: git log --pretty=format:"" --name-only -4 (只筛选最近4次改动的文件列表)
$: git log --author=icehill --grep=需求1 --name-only --pretty=format:""|sort -u
根据commit message 筛选相关需求的提交列表,这条命令是我自己经常用来统计某个需求改动的所有文件列表
不过前提是commit的时候message应该填相同的内容,如果是项目比较大,还看可以加上时间断的限制--since
之类的,就能更加精确地筛选|后面是sort命令,sort -u是为了去重,这样就能轻松得到某个需求改动的所有文件列表了。
- 转载请注明来源:git log进阶篇
- 本文永久链接地址:http://icehill.cn/post/single/info/151.html