git diff 是 Git 中查看文件**差异(diff)**的核心命令,用于比较 工作区、暂存区、版本库(commit/分支) 之间的文件变化。
一、基本对比(最常用)
1. 工作区 ↔ 暂存区(未add的修改)
查看已修改但未暂存的内容(git add 之前):
git diff
2. 暂存区 ↔ 最新提交(已add未commit)
查看已暂存但未提交的内容(git add 之后、git commit 之前):
git diff --staged # 或 --cached(效果一样)
3. 工作区 ↔ 最新提交(所有未提交改动)
查看所有本地变更(未暂存 + 已暂存):
git diff HEAD
二、对比历史版本 / 分支
1. 对比两个提交(commit)
git diff <commit1> <commit2> # commit2 相对于 commit1 的改动
git diff HEAD~2 HEAD # 对比当前与前前一次提交
git diff abc123 def456 # 用哈希值对比
2. 对比两个分支
git diff main dev # dev 相对于 main 的差异
git diff main..dev # 同上
git diff main...dev # 对比两分支最近公共祖先到各自最新(合并常用)
3. 对比当前与远程分支
git diff origin/main # 本地与远程 main 的差异
三、指定文件/目录
在命令末尾加路径,只看某个文件/文件夹:
git diff -- src/main.c # 工作区 vs 暂存区(仅该文件)
git diff --staged -- README.md # 暂存区 vs HEAD(仅该文件)
git diff HEAD~2 HEAD -- src/ # 对比两次提交的 src/ 目录
四、常用输出选项(美化/精简)
- 精简统计(文件列表 + 增删行数)
git diff --stat - 只看文件名
git diff --name-only - 单词级高亮(适合小修改)
git diff --word-diff - 忽略空格(格式化不影响逻辑时)
git diff -w # 忽略所有空格变化 git diff -b # 忽略行尾空格 - 显示更多上下文
git diff -U5 # 显示5行上下文(默认3行)
五、输出说明(看懂 diff)
diff --git a/file.txt b/file.txt
index 1234567..890abc1 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,4 @@
第一行(不变)
-第二行(被删除)
+第二行(新增内容)
+第三行(新行)
-:旧版本删除的行+:新版本新增的行@@:行号范围
六、常见场景速查表
| 命令 | 作用 |
|---|---|
git diff | 工作区 ↔ 暂存区(未add) |
git diff --staged | 暂存区 ↔ HEAD(已add未commit) |
git diff HEAD | 工作区 ↔ 最新提交(全部未提交) |
git diff HEAD^ HEAD | 上一次提交 ↔ 当前 |
git diff main dev | 分支 main ↔ dev |
git diff --stat | 只看修改统计 |
git diff -- file.js | 只看 file.js |

1171

被折叠的 条评论
为什么被折叠?



