平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Git提交历史查看与日志筛选的全攻略”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
克隆示例仓库并进入目录:
$ git clone https://github.com/schacon/simplegit-progit
$ cd simplegit-progit
直接运行 git log,默认会按 倒序 列出所有提交:
$ git log
commit ca82a6dff817……
Author: Scott Chacon <schacon@…>
Date: Mon Mar 17 21:52:11 2008 -0700
Change version number
commit 085bb3bcb6……
Author: Scott Chacon <schacon@…>
Date: Sat Mar 15 16:40:33 2008 -0700
Remove unnecessary test
commit a11bef06a3……
Author: Scott Chacon <schacon@…>
Date: Sat Mar 15 10:31:28 2008 -0700
Initial commit
每条记录包括提交哈希(SHA-1)、作者、日期和提交信息。
跟随每次提交后直接输出该提交所引入的 diff:
$ git log -p -2
仅显示最近两次提交及其完整代码变更。
在每次提交下方汇总修改文件列表及插入/删除行数:
$ git log --stat
输出示例:
Rakefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
若只想看统计汇总行,可用 --shortstat。
oneline:每个提交一行,配合 --abbrev-commit 可更简洁:
$ git log --pretty=oneline
short/full/fuller:分别对应不同程度的信息丰富度。
采用 format: 自定义输出字段,常用占位符如下所示:
| 占位符 | 含义 |
|---|---|
%H | 完整提交哈希 |
%h | 简短提交哈希 |
%an | 作者名称 |
%ae | 作者邮箱 |
%ar | 作者日期(相对,如 “2 weeks ago”) |
%cn | 提交者名称 |
%ce | 提交者邮箱 |
%cr | 提交者日期(相对) |
%s | 提交信息摘要 |
示例:
$ git log --pretty=format:"%h - %an, %ar : %s"
在日志前加上分支/合并结构的 ASCII 图示:
$ git log --pretty=format:"%h %s" --graph
示例输出:
* 2d3acf9 Ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of …
|
| * 420eac9 Add method for current branch
* | 30e367c Timeout code and tests
...
-n 或 -<n>:仅显示最近 n 条提交
$ git log -3 # 最近三次
--since / --after:指定起始日期--until / --before:指定结束日期兼容多种格式,如 "2025-01-15"、"2 weeks ago"。
$ git log --since="2 weeks"
--author="用户名或邮箱"--committer="提交者"$ git log --author="Junio C Hamano"
仅显示提交信息中匹配给定正则/字符串的记录:
$ git log --grep="bugfix"
添加 --all-match 要求同时匹配多个 --grep 或 --author 条件。
查找改动中添加或删除某个字符串的提交:
$ git log -S function_name
仅显示对指定文件或目录有改动的提交:
$ git log -- path/to/file
记得在路径前加 -- 来区分选项与路径。
查询 2008 年 10 月由 Junio Hamano 修改 t/ 目录下文件的非合同时提交:
$ git log
--pretty="%h - %s"
--author="Junio C Hamano"
--since="2008-10-01"
--before="2008-11-01"
--no-merges
-- t/
输出最近符合条件的若干提交。

git log 是查看、分析项目历史的核心利器。掌握补丁输出、统计信息、格式定制、图形化分支、时间/作者/内容过滤等功能后,你能够:
落到代码里,以上就是Git提交历史查看与日志筛选的全攻略的详细内容,更多关于Git历史查看与日志筛选的资料请关注脚本之家其它相关文章!