Git 入门教程
查看差异与历史
本教程共 26 篇 · 第 6 篇 · 更新于 2026-07-29 · 约 7 分钟阅读
GitGit 入门教程git diffgit loggit show差异历史提交记录
6. 查看差异与历史
本节目标:掌握 git diff 和 git log 的各种用法,能快速定位”改了什么”和”什么时候改的”。
git diff:查看差异
git diff 是回答”到底改了啥”的利器。不同参数比较的对象不一样。
工作区 vs 暂存区
不加参数,git diff 比较的是工作区和暂存区的差异:
git diff
输出:
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
- 号是删掉的行,+ 号是新增的行。
暂存区 vs 版本库
git diff --staged(或 --cached)比较暂存区和最后一次提交:
git diff --staged
工作区 vs 版本库
git diff HEAD 比较工作区和最后一次提交:
git diff HEAD
两个提交之间
比较两个提交之间的差异:
git diff abc1234 def5678
Tip
git diff --stat只显示改了哪些文件、多少行,不看具体内容。适合快速浏览。
git log:查看提交历史
git log 列出所有提交,从新到旧。
默认输出:
git log
commit abc123def456...
Author: 你的名字 <your@email.com>
Date: Mon Jul 28 10:30:00 2026 +0800
add distributed
commit def456abc123...
Author: 你的名字 <your@email.com>
Date: Sun Jul 27 14:20:00 2026 +0800
wrote a readme file
简洁模式
--oneline 每条提交只显示一行:
git log --oneline
abc123d add distributed
def456a wrote a readme file
图形化分支
--graph 用 ASCII 字符画出分支结构:
git log --oneline --graph --all
* abc123d (HEAD -> main) add distributed
| * 789xyz (feature) add feature
|/
* def456a wrote a readme file
只看最近 N 条
git log -3
只看最近 3 条。
按条件过滤
按作者过滤:
git log --author="张三"
按时间过滤:
git log --since="2026-07-01" --until="2026-07-29"
按提交说明关键字过滤:
git log --grep="fix"
Note
--oneline --graph --all --decorate是日常最常用的组合。可以记成”全景观模式”。
git show:查看单次提交详情
想看某次提交具体改了哪些文件:
git show abc123d
输出包括提交信息和 diff 内容。
只看改了哪些文件,不看 diff:
git show --stat abc123d
实用组合
日常最常用的几个命令:
# 简洁历史 + 分支图
git log --oneline --graph --all
# 看最近 5 条
git log --oneline -5
# 看某个文件的历史
git log --oneline readme.txt
# 看某次提交的详细内容
git show HEAD
这章学到了什么
git diff:工作区 vs 暂存区git diff --staged:暂存区 vs 版本库git diff HEAD:工作区 vs 版本库git log --oneline --graph --all:全景观历史git show:查看单次提交详情- 按作者、时间、关键字过滤 log 输出
下一章,我们学习如何撤消操作——Git 的”后悔药”。