git diff 默认比较工作区与暂存区差异,因其设计初衷是帮助用户确认“已修改但未暂存”的内容;执行 git add 后再次运行 git diff 输出为空,即验证该行为。

直接运行 git diff 就能查看工作区(Working Directory)与暂存区(Staging Area / Index)之间的差异。
为什么默认命令就能看到工作区和暂存区的差异
git diff 不带参数时,Git 默认比较的是 工作区文件 和 暂存区快照 的内容。也就是说,它显示的是你修改了哪些文件、改了哪几行,但还没执行 git add 加入暂存区的部分。
这是最常用的一种对比场景,用于确认“我改了什么,还没准备提交”。
常见用法与实用技巧
-
只看某个文件的差异:运行
git diff -- path/to/file.txt,聚焦排查单个文件的未暂存改动 -
忽略空格变化:加
-w参数,如git diff -w,避免因缩进或换行导致干扰 -
以颜色高亮显示:确保 Git 配置开启了颜色(默认通常已开启),若无颜色可执行
git config --global color.ui auto -
对比时排除某些文件类型:配合
.gitattributes或使用git diff --no-index(适用于特殊场景,非本题主流)
注意区分其他 diff 场景
别把这几个命令搞混:
-
git diff --cached(或git diff --staged):对比 暂存区 和 最新一次提交(HEAD) —— 即“已暂存、待提交的内容” -
git diff HEAD:对比 工作区 和 最新一次提交 —— 相当于工作区 vs 暂存区 + 暂存区 vs HEAD 的合并结果 -
git diff commit1 commit2:直接比较两个历史提交间的差异
一个小验证方法
想确认当前 git diff 确实反映的是工作区 vs 暂存区?可以这样做:
- 修改一个已跟踪文件,比如
README.md - 运行
git diff→ 能看到你的修改 - 再执行
git add README.md - 再次运行
git diff→ 输出为空,说明暂存区已同步,工作区无新改动


















