查看提交历史
在提交了若干更新,或者克隆了某个项目之后,你也许想回顾一下提交历史。Git 提供了强大的工具来完成这件事。
git log
不带参数时,git log 会按时间倒序列出所有提交:
git log
# commit ca82a6dff817ec66f44342007202690a93763949 (HEAD -> main)
# Author: 张三 <[email protected]>
# Date: Mon Mar 17 21:52:11 2025 +0800
#
# 修改版本号按 q 退出,按空格翻页,按 / 搜索。
常用选项
# 每个提交只显示一行
git log --oneline
# 以图形方式显示分支合并历史
git log --oneline --graph --all
# 显示每次提交的修改内容
git log -p
# 只显示最近 3 次提交
git log -3
# 显示每次提交修改了哪些文件及行数统计
git log --stat过滤提交
# 按作者
git log --author="张三"
# 按提交说明关键字
git log --grep="登录"
# 按时间范围
git log --since="2025-01-01" --until="2025-03-01"
git log --since="2 weeks ago"
# 只看某个文件的历史
git log -- src/app.js
# 查找添加或删除了某段代码的提交
git log -S "getUserInfo"
# 不显示合并提交
git log --no-merges自定义输出格式
git log --pretty=format:"%h %an %ar : %s"
# ca82a6d 张三 6 天前 : 修改版本号常用占位符:
| 占位符 | 含义 |
|---|---|
%H / %h | 完整 / 简短提交哈希 |
%an / %ae | 作者名字 / 邮箱 |
%ad / %ar | 作者日期 / 相对日期 |
%s | 提交说明第一行 |
%d | 分支、标签等引用名 |
查看分支之间的差异提交
# 在 feature 中但不在 main 中的提交
git log main..feature
# 两个分支各自独有的提交
git log main...feature --left-rightgit show
查看某个提交的详细信息和修改内容:
# 查看最新提交
git show
# 查看指定提交
git show a1b2c3d
# 查看某个提交中某个文件的内容
git show a1b2c3d:src/app.js引用提交的方式
除了哈希值,还可以用相对引用:
git show HEAD # 当前提交
git show HEAD~1 # 上一个提交
git show HEAD~3 # 往前第 3 个提交
git show HEAD^2 # 合并提交的第二个父提交
git show main@{yesterday} # main 分支昨天的状态git blame
想知道某一行代码是谁、在什么时候写的?用 git blame:
git blame src/app.js
# 只看第 10 到 20 行
git blame -L 10,20 src/app.js提示
用
blame找到提交后,再git show看看那次提交的说明和完整改动,通常就能知道这行代码当初为什么这么写。
git shortlog
按作者汇总提交,常用于生成发布说明:
git shortlog -sn
# 120 张三
# 85 李四