git log操作

940 阅读4分钟

git log -n

展示前n条数据

git log –stat

展示简要的每次提交行数的变化,及其他基本信息

选项显示每次提交的文件增删数量(注意:修改一行记作增加一行且删去一行)

git log -p

展示每次提交详细的代码变化

类似Linux的diff

git log –pretty=oneline

用一行展示每次提交的commit id 和 提交注释信息

git log –graph

展示分支信息

git log –pretty=format:""

个人log配置个性化输出命令

  • %H 提交对象(commit)的完整哈希字串
  • %h 提交对象的简短哈希字串
  • %T 树对象(tree)的完整哈希字串
  • %t 树对象的简短哈希字串
  • %P 父对象(parent)的完整哈希字串
  • %p 父对象的简短哈希字串
  • %an 作者(author)的名字
  • %ae 作者的电子邮件地址
  • %ad 作者修订日期(可以用 -date= 选项定制格式)
  • %ar 作者修订日期,按多久以前的方式显示
  • %cn 提交者(committer)的名字
  • %ce 提交者的电子邮件地址
  • %cd 提交日期
  • %cr 提交日期,按多久以前的方式显示
  • %s 提交说明

git log –since –author –grep

展示指定log信息,时间参数需要用UTC格式时间

  • -n 仅显示最近的 n 条提交
  • –since, –after 仅显示指定时间之后的提交。
  • –until, –before 仅显示指定时间之前的提交。
  • –author 仅显示指定作者相关的提交。
  • –committer 仅显示指定提交者相关的提交。

git log hash..

可以输出指定hash之后的提交

git log --decorate

让 git log 显示指向这个提交的所有引用(比如说分支、标签等)

Shortlog

git shortlog 是一种特殊的 git log,它是为创建发布申明设计的。它把每个提交按作者分类,显示提交信息的第一行。这样可以很容易地看到谁做了什么。

Graph

--graph 选项绘制一个 ASCII 图像来展示提交历史的分支结构。它经常和 --oneline 和 --decorate 两个选项一起使用,这样会更容易查看哪个提交属于哪个分支

星号表明这个提交所在的分支,所以上图的意思是 23ad9ad 和 16b36c6 这两个提交在 topic 分支上,其余的在 master 分支上。

虽然这对简单的项目来说是个很好用的选择,但你可能会更喜欢 gitk 或 SourceTree 这些更强大的可视化工具来分析大型项目。

按日期

git log --after="2014-7-1"

使用 --after 或 --before 标记来按日期筛选。它们都接受好几种日期格式作为参数

get log --after="yesterday"

也可以传入相对的日期,比如一周前("1 week ago")或者昨天("yesterday")

git log --after="2014-7-1" --before="2014-7-4"

可以同时提供--before 和 --after 来检索两个日期之间的提交

  • --since、--until 标记和 --after、--before 标记分别是等价的。

按作者

git log --author="John"

只想看某一特定作者的提交的时候,你可以使用 --author 标记。它接受正则表达式,返回所有作者名字满足这个规则的提交。如果你知道那个作者的确切名字你可以直接传入文本字符串,它会显示所有作者叫 John 的提交。作者名不一定是全匹配,只要包含那个子串就会匹配

git log --author="John|Mary"

你也可以用正则表达式来创建更复杂的检索。比如,下面这个命令检索名叫 Mary 或 John 的作者的提交。 注意作者的邮箱地址也算作是作者的名字,所以你也可以用这个选项来按邮箱检索。如果你的工作流区分提交者和作者,--committer 也能以相同的方式使用。

按提交信息

按提交信息来过滤提交,可以使用 --grep 标记。它和上面的 --author 标记差不多,只不过它搜索的是提交信息而不是作者。比如说,你的团队规范要求在提交信息中包括相关的issue编号,可以用下面这个命令来显示这个 issue 相关的所有提交: git log --grep="JRA-224:" 也可以传入 -i 参数来忽略大小写匹配。