git log进阶篇

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