Git:提交前用 diff --staged 看暂存区改了什么

45 次浏览1 条回复

有时候文件已经 git add 进暂存区了,提交前想再确认一下这次到底会带哪些改动,可以看 git diff --staged。

环境:Git 2.30+。开个小目录试一下:

mkdir git-diff-staged-demo && cd git-diff-staged-demo
git init
printf 'hello\n' > note.txt
git add note.txt

git diff --staged

这时看到的是暂存区里准备进入下一次提交的内容,不是工作区里所有未保存的想法。

如果后面又改了同一个文件但还没 add,可以对比一下:

printf 'world\n' >> note.txt
git diff
git diff --staged

我一般会在 git commit 前扫一眼这个,尤其是刚才用过 git add . 的时候,能少带进去一些手滑的东西。

再补一个对照:git diff --staged 看的是“暂存区 vs 上一次提交”,git diff 看的是“工作区 vs 暂存区”;想一次看本次提交相对 HEAD 的全部改动,可以用 git diff HEAD。所以文件既改过又重新 add 过时,两个 diff 看到的内容不一样,别只看其中一个就以为提交内容完整了。