5.1 查看提交记录
经过了之前的教程,我们已经可以使用 Git 进行分支管理,标签管理等团队协作。从本节开始我们将进行 Git 进阶方面的教程。
本文将讲进阶操作的第一节,查看提交记录。查看提交记录使用的是 log
命令,在之前的教程中我们已经使用过该命令来查看提交记录。直接使用 git log
命令查看提交记录 git 会使用默认的显示方式来显示记录。在本节中我们将使用参数对展示的结果做一些定制。
由于之前教程使用的 git 仓库提交内容过少,无法直观展示效果,本节内容使用鸿蒙系统内核的仓库作为演示。
查看提交记录
直接使用 git log
可以查看提交记录。git 会把输出结果重定向到 less
,因此 less
支持的一些操作也都可以在 git log
的结果展示中操作。
使用键盘的上下方向键可以控制结果的滚动,按 / 可以进入搜索,搜索后可以使用小写的 n 转到下一个搜索结果,使用大写的 N 转到上一个搜索结果。
提交差异信息
只使用 git log
并不会输出每个提交具体都进行了哪些更改,使用 -p
或 --patch
参数可以在每条提交下面展示出该提交具体都修改了哪些文件的哪些行。
提交的简略统计信息
如果想要知道都有哪些文件被修改了,但又没必要知道所修改的具体行,可以使用 --stat
参数,它可以输出被修改的文件,但又不会像 -p
一样把具体行展示出来。
使用不同风格
默认情况下 git log
会展示 commitid、作者、日期和提交说明等信息。但输出结构并不是一成不变的,可以使用下面的命令修改输出结果的格式
# 用法,完整的格式参数请见下表1
git log --pretty=format:"格式"
# 只展示简写哈希值、作者和日期
git log --pretty=format:"%h %an %cr"
选项 | 说明 |
---|---|
%H | 提交的完整哈希值 |
%h | 提交的简写哈希值 |
%T | 树的完整哈希值 |
%t | 树的简写哈希值 |
%P | 父提交的完整哈希值 |
%p | 父提交的简写哈希值 |
%an | 作者名字 |
%ae | 作者的电子邮件地址 |
%ad | 作者修订日期(可以用 --date=选项 来定制格式) |
%ar | 作者修订日期,按多久以前的方式显示 |
%cn | 提交者的名字 |
%ce | 提交者的电子邮件地址 |
%cd | 提交日期 |
%cr | 提交日期(距今多长时间) |
%s | 提交说明 |
限制输出数量
一个大型项目可以存在几万甚至几十万的提交记录,这个查看的时候没有必要把全部的提交记录都输出到结果中。可以使用表 1 中的参数来对结果进行筛选。
# 只显示最近的10次提交
git log -10
# 只显示最近两周的提交
git log --since=2.weeks
# 只显示最近一天的提交
git log --after=1.days
# 只显示2020年04月19号之后的提交
git log --after=2020-04-19
# 只显示zhushengle的提交
git log --author=zhushengle
# 只显示提交信息中包含“修复”的提交
git log --grep=修复
# 只显示fatfs_2_vfs函数相关的改动
git log -Sfatfs_2_vfs
选项 | 说明 |
---|---|
-{"<"}n{">"} | 仅显示最近的 n 条提交。 |
--since, --after | 仅显示指定时间之后的提交。 |
--until, --before | 仅显示指定时间之前的提交。 |
--author | 仅显示作者匹配指定字符串的提交。 |
--committer | 仅显示提交者匹配指定字符串的提交。 |
--grep | 仅显示提交说明中包含指定字符串的提交。 |
-S | 仅显示添加或删除内容匹配指定字符串的提交。 |
显示分支路径
上面的参数已经可以做到对结果进行筛选和定制了,但都无法直观的展示各个分支之间的关系和生活周期。使用 --graph
参数能以树型输出各个分支的对应关系。
常用参数
选项 | 说明 |
---|---|
-{"<"}n{">"} | 仅显示最近的 n 条提交。 |
--since, --after | 仅显示指定时间之后的提交。 |
--until, --before | 仅显示指定时间之前的提交。 |
--author | 仅显示作者匹配指定字符串的提交。 |
--committer | 仅显示提交者匹配指定字符串的提交。 |
--grep | 仅显示提交说明中包含指定字符串的提交。 |
-S | 仅显示添加或删除内容匹配指定字符串的提交。 |
-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(用来定义自己的格式)。 |
--oneline | --pretty=oneline --abbrev-commit 合用的简写。 |
--reverse | 倒序显示结果 |
--merges | 仅显示分支合并的提交记录 |