首页 / Git 入门教程 / 查看差异与历史

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 的”后悔药”。