查看提交历史


在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史. 完成这个任务最简单而又有效的工具是 git log 命令。


默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。



git log 有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。



一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交:


$ git log -p -2


该选项除了显示基本信息之外,还在附带了每次 commit 的变化。 当进行代码审查,或者快速浏览某个搭档提交的 commit 所带来的变化的时候,这个参数就非常有用了。 你也可以为 git log 附带一系列的总结性选项。 比如说,如果你想看到每次提交的简略的统计信息,你可以使用 --stat 选项:



$ git log —stat


--stat 选项在每次提交的下面列出额所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。



另外一个常用的选项是 --pretty。 这个选项可以指定使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如用 oneline 将每个提交放在一行显示,查看的提交数很大时非常有用。 另外还有 short,full 和 fuller 可以用,展示的信息或多或少有些不同


$ git log --pretty=oneline


但最有意思的是 format,可以定制要显示的记录格式。 这样的输出对后期提取分析格外有用 — 因为你知道输出的格式不会随着Git的更新而发生改变:



$ git log --pretty=format:"%h - %an, %ar : %s”



其中:%h是提交的哈希值,%an是作者的名字,%ar是提交时间,%s是提交说明





git log 的常用选项



-p



按补丁格式显示每个更新之间的差异。



--stat



显示每次更新的文件修改统计信息。



--shortstat



只显示 --stat 中最后的行数修改添加移除统计。



--name-only



仅在提交信息后显示已修改的文件清单。



--name-status



显示新增、修改、删除的文件清单。



--abbrev-commit



仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。



--relative-date



使用较短的相对时间显示(比如,“2 weeks ago”)。



--graph



显示 ASCII 图形表示的分支合并历史。



--pretty



使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。