前一节:【Git 学习二】Git 文件操作 - 文件添加、移除与重命名:
【Git 学习三】Git 查看提交历史,格式化输出统计信息
文章目录
1. 基础命令
用于查看提交历史记录/提交日志的命令为
git log
在 git bash 输入此命令后, 会以时间逆序(最近的时间在前)列出各个提交历史,这些提交历史内容包括:
- 提交的 SHA-1 校验和,
- 作者名称,电子邮箱地址
- 提交日期
- 提交说明
大致如下:
$ git log
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date: Mon Mar 1721:52:112008-0700
changed the version number
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date: Sat Mar 1516:40:332008-0700
removed unnecessary test
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <[email protected]>
Date: Sat Mar 1510:31:282008-0700
first commit
2. 统计信息
2.1 - 简略统计信息
简略修改统计信息:
git log
命令后添加
--stat
选项,会显示哪些文件被修改,以及被修改的文件有多少行的移除 (deletions),多少行添加 (insertions)。
$ git log --stat
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <[email protected]>
Date: Mon Mar 1721:52:112008-0700
changed the version number
Rakefile |2+-1 file changed,1insertion(+),1deletion(-)
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon <[email protected]>
Date: Sat Mar 1516:40:332008-0700
removed unnecessary test
lib/simplegit.rb |5-----1 file changed,5deletions(-)
commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon <[email protected]>
Date: Sat Mar 1510:31:282008-0700
first commit
README |6++++++
Rakefile |23+++++++++++++++++++++++
lib/simplegit.rb |25+++++++++++++++++++++++++3 files changed,54insertions(+)
单行历史信息:
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 条提交, n 在使用时用具体数字代替
--since
,
--after
仅显示指定时间之后的提交
--until
,
--before
仅显示指定时间之前的提交
--author
仅显示作者匹配指定字符串的提交
--committer
仅显示提交者匹配指定字符串的提交
--grep
仅显示提交说明中包含指定字符串的提交
-S
仅显示添加或删除内容匹配指定字符串的提交
其他使用举例
仅显示最近两条提交历史
git log -2
仅显示最近两周的提交历史
git log --since=2.weeks
仅显示 path/src/ 目录下的提交历史
git log -- path/src/
2.4 - 其他的选项
选项说明速记
-p
按补丁格式显示每个提交引入的差异patch
--stat
显示每次提交的文件修改统计信息statistics
--shortstat
只显示
--stat
中最后的行数修改添加移除统计-
--name-only
仅在提交信息后显示已修改的文件清单-
--name-status
显示新增、修改、删除的文件清单-
--abbrev-commit
仅显示 SHA-1 校验和所有 40 个字符中的前几个字符abbreviated
--relative-date
使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”-
--graph
在日志旁以 ASCII 图形显示分支与合并历史-
--pretty
使用其他格式显示历史提交信息。可用的选项包括
oneline
、
short
、
full
、
fuller
和
format
- ```
--oneline
--pretty=oneline
与
--abbrev-commit
```
合用的简写-
参考链接:
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
版权归原作者 Loup&卡普 所有, 如有侵权,请联系我们删除。