【Git 学习三】Git 查看提交历史,格式化输出统计信息

前一节:【Git 学习二】Git 文件操作 - 文件添加、移除与重命名


【Git 学习三】Git 查看提交历史,格式化输出统计信息

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 , onelineformat

用法:

git log --pretty=<option>

举例:

git log --pretty=oneline

git log --pretty=onelinegit 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使用其他格式显示历史提交信息。可用的选项包括 onelineshortfullfullerformat-
--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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值