git log

git log 文章目录1. 简介2. 格式3. 选项3.1 输出格式3.2 数量限制3.3 范围与路径4. 示例4.1 基本用法4.2 限制数量4.3 按作者/信息筛选4.4 查看文件历史4.5 查看分支差异4.6 自定义输出格式5. 注意5.1 常用别名5.2 git log vs git reflog5.3 查看代码统计5.4 完整占位符列表6. 小结参考文献1. 简介git log用于查看提交历史。它显示提交哈希、作者、日期和提交信息是了解项目演进历史的核心命令。典型场景查看项目的提交记录搜索特定提交查看某个文件的修改历史统计代码贡献如果记录过多则按 Page Up、Page Down、↓、↑ 键来控制显示按 q 退出历史记录列表。2. 格式gitlog[options][revision-range][[--]path…​]注意path用于限定指定路径文件或目录相关文件的提交历史不指定缺省为当前目录及所有子目录下的所有文件。3. 选项3.1 输出格式--merges只展示 merge 信息 --no-merges 不展示 merge 信息 --abbrev-commit 精简 commit id只展示40个十六进制数字构成的 commitid的首部默认7位--graph以文本字符绘制的“图形”展示 --pretty[format]自定义输出格式如%h - %s(%an)。如果没有参数则缺省为 oneline--formatformat以指定格式展示format可取值 oneline, short, medium, full, fuller, email, raw, format:string和 tformat:string其中string为格式控制字符串。缺省值为 medium。常用的是 oneline--oneline一行显示简洁模式。等价于--prettyoneline --abbrev-commit--greppattern根据提交消息的内容来过滤和查找提交历史。 --stat[width[,name-width[,count]]]显示文件变更统计增删行数 -p,--patch显示每次提交的具体变更内容 --relative-date 显示相对时间如2days ago。等价于--daterelative3.2 数量限制-, -n, --max-countnumber限制显示最近的 n 条提交如-5--sincedate,--afterdate显示指定日期之后的提交--untildate,--beforedate显示指定日期之前的提交--authorpattern,--committerpattern只显示指定提交者的提交--greppattern只显示提交信息匹配的提交3.3 范围与路径--path只显示指定文件或目录的提交历史commit1..commit2显示两个提交之间的提交不包含 commit1branch1..branch2显示在 branch2 但不在 branch1 中的提交--all显示所有引用所有分支、远程跟踪分支、标签的提交历史。4. 示例4.1 基本用法# 完整提交历史gitlog# 一行显示最常用gitlog--oneline# 图形化显示分支结构gitlog--graph--oneline4.2 限制数量# 最近 5 条提交gitlog-5--oneline# 最近 2 周的提交gitlog--since2 weeks ago# 指定日期范围gitlog--after2024-01-01--before2024-03-014.3 按作者/信息筛选# 查看张三的提交gitlog--author张三# 搜索提交信息中包含 bug 的提交gitlog--grepbug4.4 查看文件历史# 查看 main.go 的提交历史gitlog--onelinemain.go# 查看 main.go 每次提交的具体变更gitlog-pmain.go4.5 查看分支差异# 在 feature 但不在 main 中的提交gitlog main..feature--oneline4.6 自定义输出格式# 自定义格式哈希 - 信息 (作者)gitlog--prettyformat:%h - %s (%an)# 常用格式化占位符# %h : 短哈希# %s : 提交信息# %an : 作者名# %ae : 作者邮箱# %ad : 作者日期5. 注意5.1 常用别名# 常用别名配置gitconfig--globalalias.lglog --oneline --graph --allgitconfig--globalalias.histlog --prettyformat:%C(yellow)%h %C(blue)%ad %C(white)%s %C(red)%d --dateshort# 使用别名gitlggithist5.2git logvsgit reflog命令内容说明git log提交历史仓库的提交记录可被同步git reflog引用日志本地 HEAD 的移动记录不可同步git reflog常用于找回丢失的提交。5.3 查看代码统计# 查看每次提交的增删行数gitlog--stat# 统计每个人的代码贡献gitshortlog-sn5.4 完整占位符列表占位符含义示例%H完整提交哈希a1b2c3d4e5f6...%h短提交哈希a1b2c3d%T完整树哈希t1b2c3d...%t短树哈希t1b2c3d%P完整父提交哈希p1b2c3d...%p短父提交哈希p1b2c3d%an作者名张三%ae作者邮箱zhangsanexample.com%ad作者日期按--date格式2024-06-09 10:30:00 0800%ar作者日期相对格式2 days ago%at作者日期Unix 时间戳1717900200%cn提交者名李四%ce提交者邮箱lisiexample.com%cd提交者日期2024-06-09 11:00:00 0800%cr提交者日期相对格式1 hour ago%ct提交者日期Unix 时间戳1717903800%s提交信息标题修复登录验证 bug%b提交信息正文详细描述%B提交信息标题 正文完整信息%d引用名称分支、标签(HEAD - main, origin/main)%D引用名称不带括号HEAD - main, origin/main%e编码方式UTF-8%N提交注释通常为空%GGGPG 签名原始信息%G?GPG 签名状态G好、B坏、U未知等%GSGPG 签名者张三 zhangsanexample.com%GKGPG 密钥 IDA1B2C3D46. 小结需求命令说明简洁历史git log --oneline最常用一行一个提交图形化分支git log --graph --oneline --all查看分支结构最近 N 条git log -5 --oneline限制数量文件历史git log --oneline main.go查看文件修改记录搜索提交信息git log --grepbug查找特定提交查看作者提交git log --author张三按作者筛选查看分支差异git log main..feature分支间差异一句话总结git log是查看提交历史的核心命令。--oneline最常用--graph可视化分支--author和--grep可按条件筛选。推荐配置别名git lg简化日常使用。参考文献Git - git-log Documentation