Git 中 log 命令的使用

default

常用命令

命令 说明
git log –oneline 单行简略模式
git log –author=“Alice” 按作者筛选提交
git log –grep=“fix” 搜索提交信息中含关键词的记录
git log –since=“3 days ago” 3 天内的提交
git log –after=“2025-10-01” –before=“2025-10-31” 指定日期区间

结构可视化

命令 说明
git log –oneline –graph ASCII 分支图(单分支)
git log –oneline –graph –all 显示所有分支的提交图
git log –oneline –graph –decorate 显示分支/标签名(HEAD、main、v1.0)
git log –oneline –graph –all –decorate ✅ 全能分支图(推荐别名)

时间与范围筛选

命令 说明
git log –since=“3 days ago” 3 天内的提交
git log –until=“2025-01-01” 2025-01-01 之前的提交
git log –after=“2025-10-01” –before=“2025-10-31” 指定日期区间
git log branchA..branchB branchB 有但 branchA 没有的提交
git log ^main dev 或 git log dev ^main dev 分支特有提交(等价于 dev..main 的反向)

按文件/内容搜索

命令 说明
git log – README.md 查看某文件的提交历史
git log –follow – file.txt 追踪重命名/移动后的文件历史
git log -S “password” 查找新增或删除了 “password” 字符串的提交(二进制搜索)
git log -G “error.*\d+” 用正则搜索变更内容(如含 error 和数字)

差异与统计

命令 说明
git log -p 显示每次提交的完整 patch(代码差异)
git log -p -2 仅最后 2 次提交的 diff
git log –stat 显示文件变更统计(增删行数)
git log –name-only 仅列出每次提交修改的文件名
git log –name-status 显示文件状态(A:新增, M:修改, D:删除)

筛选特定类型提交

命令 说明
git log –merges 只显示合并提交(Merge commits)
git log –no-merges 排除合并提交(仅普通 commit)
git log –first-parent 只沿第一条父线追溯(适合 CI/CD 查主干历史)

自定义

1
2
3
4
5
6
7
# 紧凑带颜色(推荐设为别名)
git log --graph \
  --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' \
  --abbrev-commit

## 根据日期筛选,显示“时间+摘要”
git log --since="2025-11-01" --pretty='%ad: %s' --date=iso
符号 含义
%h 短 hash(如 a1b2c3d)
%H 完整 hash
%an 作者名
%ae 作者邮箱
%ad 作者日期(配合 –date=iso 更清晰)
%ar 相对时间(如 2 hours ago)
%s 提交摘要
%d ref 名(分支/标签)
%f 安全文件名格式的提交信息
Licensed under CC BY-NC-SA 4.0
Gear(夕照)的博客。记录开发、生活,以及一些不足为道的思考……