git diff - 将索引与 HEAD 进行比较?暂存区和 HEAD 呢?

git diff - compares index to HEAD? What about staging area and HEAD?

所以我有一段时间对此感到困惑。

默认情况下 git diff 比较 indexHEAD 吗?或者 staging areaHEAD?

假设 git diff 将索引与 HEAD 进行比较,我将如何 运行 git diff 在暂存和 HEAD 而不是索引和 HEAD 之间?

什么?首先 staging areaindex 是一样的。然后,git diff 将 HEAD+index(可以这么说)与您的工作树进行比较。

要比较 工作目录 暂存目录/索引 使用:

git diff [--options] [--] [<path>…​]

这回答了问题我在此存储库中的文件中更改了什么?

staging / indexHEAD 进行比较( 默认为 HEAD)使用:

git diff [--options] --cached [<commit>] [--] [<path>…​]

--cached可以换成--staged方便记忆。在文档 index 中,staging 和 cached 都用来表示同一件事。

这回答了问题我的下一次提交会是什么样子?

额外
要将 工作目录 HEAD 进行比较,请使用:

git diff $(git rev-parse --short HEAD) [--] [<path>…​]