Git Log Cheatsheet - Git Commit History Reference

Git log 是查看提交历史的命令,最常用的格式和过滤选项都在这里了,按格式化输出、过滤条件、统计分析、范围差异分组整理,快速定位代码变更。

Version Control·48 commands·Last updated 2026-07-21
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 按正则匹配变更内容,两者用途不同。