前一节:【Git 学习二】Git 文件操作 - 文件添加、移除与重命名:
【Git 学习三】Git 查看提交历史,格式化输出统计信息
文章目录
- 【Git 学习三】Git 查看提交历史,格式化输出统计信息
- 1. 基础命令
- 2. 统计信息
- 2.1 - 简略统计信息
- 2.2 - 格式化统计信息
- 2.3 - 过滤输出
- 2.4 - 其他的选项
1. 基础命令
用于查看提交历史记录/提交日志的命令为
git log
在 git bash 输入此命令后, 会以时间逆序(最近的时间在前)列出各个提交历史,这些提交历史内容包括:
- 提交的 SHA-1 校验和,
- 作者名称,电子邮箱地址
- 提交日期
- 提交说明
大致如下:
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
2. 统计信息
2.1 - 简略统计信息
简略修改统计信息:
git log
命令后添加 --stat
选项,会显示哪些文件被修改,以及被修改的文件有多少行的移除 (deletions),多少行添加 (insertions)。
$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date: Mon Mar 17 21:52:11 2008 -0700
changed the version number
Rakefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 16:40:33 2008 -0700
removed unnecessary test
lib/simplegit.rb | 5 -----
1 file changed, 5 deletions(-)
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <schacon@gee-mail.com>
Date: Sat Mar 15 10:31:28 2008 -0700
first commit
README | 6 ++++++
Rakefile | 23 +++++++++++++++++++++++
lib/simplegit.rb | 25 +++++++++++++++++++++++++
3 files changed, 54 insertions(+)
单行历史信息:
git log
命令加上 --oneline
选项,可以一行显示简略日志信息。
$ git log --oneline
ca82a6dff changed the version number
085bb3bcb removed unnecessary test
a11bef06a first commit
此命令相当于
--pretty=oneline
与--abbrev-commit
合用,--pretty
稍后介绍。
2.2 - 格式化统计信息
git log
的 --pretty
选项可以使用自定义的格式展示提交历史记录,有一些内建子选项供选择short
, full
, fuller
, oneline
和 format
。
用法:
git log --pretty=<option>
举例:
git log --pretty=oneline
git log --pretty=oneline
与git log --oneline
不同的地方为,前者显示完整的 SHA-1 哈希值校验和
format
用于自定义显示格式
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit
%h
表示简写哈希值,%an
表示作者名称,%ar
表示提交历史的相对时间,%s
表示提交说明
–pretty=format 常用标识
选项 | 说明 | 速记 |
%H | 提交的完整哈希值 | commit hash |
%h | 提交的简写哈希值 | - |
%T | 树的完整哈希值 | tree hash |
%t | 树的简写哈希值 | - |
%P | 父提交的完整哈希值 | - |
%p | 父提交的简写哈希值 | - |
%an | 作者名字 | author name |
%ae | 作者的电子邮件地址 | author email |
%ad | 作者修订日期 | author date |
%ar | 作者修订日期,按多久以前的方式显示 | author date, relative |
%cn | 提交者的名字 | committer name |
%ce | 提交者的电子邮件地址 | committer email |
%cd | 提交日期 | committer date |
%cr | 提交日期,按多久以前的方式显示 | committer date, relative |
%s | 提交说明 | subject |
作者 是实际的修改人,而 提交者 是将此工作合并到分支的人,如代码监视人/责任人,Git 的维护人员等。
2.3 - 过滤输出
如需要在源码中查看 Junio C Hamano 在 2008 年10 月期间除了合并提交之外的哪些提交 修改了 t/ 路径下的文件,可以使用:
$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \
--before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch
其他过滤输出选项
选项 | 说明 |
| 仅显示最近的 n 条提交, n 在使用时用具体数字代替 |
| 仅显示指定时间之后的提交 |
| 仅显示指定时间之前的提交 |
| 仅显示作者匹配指定字符串的提交 |
| 仅显示提交者匹配指定字符串的提交 |
| 仅显示提交说明中包含指定字符串的提交 |
| 仅显示添加或删除内容匹配指定字符串的提交 |
其他使用举例
仅显示最近两条提交历史
git log -2
仅显示最近两周的提交历史
git log --since=2.weeks
仅显示 path/src/ 目录下的提交历史
git log -- path/src/
2.4 - 其他的选项
选项 | 说明 | 速记 |
| 按补丁格式显示每个提交引入的差异 | patch |
| 显示每次提交的文件修改统计信息 | statistics |
| 只显示 | - |
| 仅在提交信息后显示已修改的文件清单 | - |
| 显示新增、修改、删除的文件清单 | - |
| 仅显示 SHA-1 校验和所有 40 个字符中的前几个字符 | abbreviated |
| 使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago” | - |
| 在日志旁以 ASCII 图形显示分支与合并历史 | - |
| 使用其他格式显示历史提交信息。可用的选项包括 | - |
|
| - |
参考链接:
Git 官方中文操作文档 - https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4%E5%8E%86%E5%8F%B2