git log
用 git log 探索提交历史——查看、过滤和格式化过往提交。
你将学到
- 如何用 git log 查看提交历史
- 有用标志:--oneline、--graph、--stat
- 按作者、日期或数量过滤
- 用 git show 查看单次提交详情
概念讲解
git log 做什么
git log 显示仓库的提交历史——每个提交按时间倒序排列,含哈希、作者、日期和信息。
git log
默认输出很详细:
commit a1b2c3d4e5f6... (HEAD -> main)
Author: Ada Lovelace <[email protected]>
Date: Mon Jan 15 10:30:00 2025 +0000
Add user login page with OAuth
commit f6e5d4c3b2a1...
Author: Alan Turing <[email protected]>
Date: Sun Jan 14 16:45:00 2025 +0000
Fix crash when cart is empty
按 q 退出日志查看器(它用 less 这样的分页器)。
单行格式
最有用的标志是 --oneline,把每次提交压缩为一行:
git log --oneline
a1b2c3d Add user login page with OAuth
f6e5d4c Fix crash when cart is empty
d4c3b2a Initial commit
这是大多数开发者日常使用的格式。
图形视图
可视化分支和合并:
git log --oneline --graph --all
* a1b2c3d (HEAD -> main) Add user login page
| * b2c3d4e (feature) Add dark mode
|/
* f6e5d4c Fix crash when cart is empty
* d4c3b2a Initial commit
这展示分支如何分叉和合并——理解项目历史的关键。
有用标志
git log --oneline # 紧凑单行格式
git log --graph --oneline # 加分支图
git log --stat # 显示每次提交中变更的文件
git log -5 # 仅最近 5 次提交
git log --author="Ada" # 仅特定作者的提交
git log --since="2 weeks ago" # 仅近期提交
git log --grep="fix" # 信息中含 "fix" 的提交
git log --follow README.md # 特定文件的历史(含重命名)
查看单次提交
用 git show 看一次提交的完整详情——改了哪些文件、怎么改的:
git show a1b2c3d
这显示提交元数据加完整 diff(那次提交中实际做的变更)。
比较提交
git diff a1b2c3d f6e5d4c # 两次提交间的变更
git diff HEAD~1 HEAD # 最近一次提交的变更
结合 git log 和 git diff 可以导航项目整个历史,准确了解什么在何时为何变了。
示例代码
# 查看完整历史(按 q 退出)
git log
# 紧凑单行视图——最有用的格式
git log --oneline
# 仅最近 5 次提交
git log --oneline -5
# 所有分支的可视化图
git log --oneline --graph --all
# 显示每次提交变更的文件
git log --stat -3
# 按作者过滤
git log --author="Ada" --oneline
# 按日期过滤
git log --since="2 weeks ago" --oneline
# 搜索提交信息
git log --grep="fix" --oneline
# 查看特定提交的详情
git show HEAD # 最近一次提交
git show HEAD~1 # 它之前的那次
# 查看单个文件的历史
git log --oneline --follow README.md
# 比较两次提交
git diff HEAD~2 HEAD --stat
涵盖 git log 的核心变体:紧凑、图形、按作者/日期/信息过滤,以及用 git show 查看单次提交。--oneline 和 --graph 是最常用的。
动手试一试
- Code Diff
比较两个版本——git log 和 git diff 一起展示历史。
- CI/CD YAML Generator
CI 流水线常显示 git log 输出——生成一个看看。
常见错误
错误写法
卡在 git log 分页器里不知道怎么退出
正确做法
git log 用分页器(less)。按 q 退出,空格下翻,b 上翻。用 git log --oneline 获取常能一屏显示的快速视图,或 git log -n 限制输出。
错误写法
不知道 --oneline 和 --graph 标志
正确做法
默认 git log 输出很冗长。git log --oneline 给紧凑视图,--graph --oneline --all 可视化分支。这两种格式覆盖 90% 日常使用。
相关资源
相关代码片段
- Git Log Snippet
高级 git log 格式化和过滤示例。
相关速查表
- Git Cheatsheet
git log 标志与历史导航。
练习 git log
2 个练习
查阅不认识的术语
新手友好的术语表用大白话解释编程术语——变量、函数、DOM、Promise 等等。
动手做项目
通过引导式项目应用所学,含起始代码与解决方案。
解读错误信息
用大白话解释常见错误——什么意思、为什么发生、如何修复。