这是git中使用平率非常高的一个操作,git中查看提交历史的功能也非常强大,提供各种筛选和输出格式定制功能。
最简单的,运行git log命令,你将看到一个详细的提交日志:

git-log
# 当然也可以只查看某个版本 $ git log fd0a1b2
信息内容都很好理解,重点说说第一行commit后这个40个字符的字符串,这是该次提交的对应的SHA-1值,在git中,会对提交(commit)、文件(blob)、目录(tree)、标签(tag)生成一个唯一的SHA-1值,git就是基于此来得知文件或目录的改动,因为这四类对象计算得到的SHA-1值都是唯一的,同时你也可以直接使用SHA-1值来指代相应的对象。比如:
$ git show bdd3996 # 查看某个版本下具体某个文件 $ git show bdd3996 README
git log还有很多命令选项来定制历史记录
选项 | 说明 |
---|---|
-(n) | 仅显示最近的 n 条提交 |
–since,–after | 仅显示指定时间之后的提交 |
–until,–before | 仅显示指定时间之前的提交 |
–author | 仅显示指定作者相关的提交 |
–committer | 仅显示指定提交者相关的提交 |
–reverse | 按时间倒序显示 |
-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(后跟指定格式) |
可以通过对上述选项进行组合定制出更为个性化的日志信息,比如:
$ git log --committer 'god'
--shortstat --pretty=oneline
该命令将以单行模式显示由god提交的统计信息。
$ git log -p -5
显示最近5次提交的,并显示其差异
除此之外,git log –graph也很好玩。我git log –graph了一下git项目的日志,非常壮观。
–pretty=format
单独介绍下–pretty=format选项。使用format和占位符可以定制出更为个性化的显示格式。
选项 | 说明 |
---|---|
%H | 提交对象(commit)的完整哈希字串 |
%h | 提交对象的简短哈希字串 |
%T | 树对象(tree)的完整哈希字串 |
%t | 树对象的简短哈希字串 |
%P | 父对象(parent)的完整哈希字串 |
%p | 父对象的简短哈希字串 |
%an | 作者(author)的名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 -date= 选项定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者(committer)的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期,按多久以前的方式显示 |
%s | 提交说明 |
$ git log --pretty=format:'%h by %ce at %cd'
该命令将以“简短SHA-1 by 提交者 at 提交时间”的格式显示日志