Git Log Cheatsheet - Git Commit History Reference
Git log 是查看提交历史的命令,最常用的格式和过滤选项都在这里了,按格式化输出、过滤条件、统计分析、范围差异分组整理,快速定位代码变更。
Back to Version Control格式化输出 6
git log --oneline单行显示提交
git log -n 10只显示最近 10 条提交
git log --pretty=format:"%h %s"自定义格式:%h 短哈希 %s 主题
git log --graph --oneline --all图形化显示所有分支
git log --stat显示文件变更统计
git log -p显示每次提交的完整差异
过滤条件 10
git log --author="John"按作者过滤
git log --since="2024-01-01"按起始时间过滤
git log --until="2024-06-30"按结束时间过滤
git log --grep="fix"按提交信息正则过滤
git log -i --grep="FIX"忽略大小写过滤提交信息
git log -- file.js查看指定文件的历史
git log -S "function_name"搜索增删指定字符串的提交(pickaxe)
git log -G "regex"按正则搜索代码变更内容
git log --no-merges排除合并提交
git log --first-parent只看主分支的第一父提交历史
统计与分析 6
git log --shortstat简要统计:文件数、插入、删除
git log --numstat每个文件的插入删除统计
git log --dirstat按目录统计变更占比
git shortlog -sn按作者统计提交数
git shortlog -sne按作者统计并显示邮箱
git log --cherry-pick --right-only main...feature查看分支独有提交
范围与差异 5
git log main..feature查看 feature 有但 main 没有的提交
git log HEAD~3..HEAD查看最近 3 条提交
git log origin/main..HEAD查看本地未推送的提交
git log --cherry-mark main...feature标记等价提交(= 等价,+ 独有)
git log --left-right main...feature区分提交属于左侧还是右侧分支
文件历史追踪 5
git log --follow file.js跟踪文件重命名后的完整历史
git log --name-only显示每次提交变更的文件名
git log --name-status显示变更文件名及状态(A/M/D)
git log --oneline -- file.js单行查看指定文件的提交历史
git log -p --follow file.js查看文件重命名前后的完整差异
自定义格式占位符 10
%H完整提交哈希
%h短提交哈希(可配 --abbrev-commit)
%s提交主题(首行)
%an作者名
%ae作者邮箱
%ad作者日期(配合 --date=short 格式化)
%ar作者相对日期(如 "2 days ago")
%d分支/标签装饰信息
%b提交正文
%cn提交者名
实用别名与组合 6
git log --oneline --graph --decorate --all图形化显示全部分支并标注引用
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short常用自定义日志格式
git log --since="2 weeks ago" --oneline查看最近两周提交
git log --merges --oneline只看合并提交
git config alias.lg "log --graph --oneline --decorate --all"设置 lg 别名,之后用 git lg 调用
git log --source --oneline显示每条提交来自的引用(远程/分支)
💡 Tips
- %H 完整哈希,%h 短哈希,%s 提交主题,%an 作者名,%ad 作者日期,%d 装饰信息。
- git log --follow file.js 可以跟踪文件重命名后的历史。
- git log main..feature 显示 feature 有但 main 没有的提交,常用于查看分支待合并内容。
- git reflog 可以查看所有操作历史,包括已删除的分支和提交。
- 配合 --date=short、--date=relative 等选项可统一日期显示格式。
- -S 按字符串精确匹配增删,-G 按正则匹配变更内容,两者用途不同。