如何区分工作目录和暂存区域?

blu*_*ray 1 git

根据我的理解 git diff,用于比较工作目录和暂存区域之间的文件。但是,如果我在暂存区域中没有暂存更改,则相同的命令git diff会比较工作目录和 HEAD 之间的文件。

为什么同一个命令 ( git diff) 给出两个不同的输出?

我实际上如何区分工作目录和暂存区域?

LeG*_*GEC 5

首先,需要澄清一点:

在 中git,当人们谈论“暂存区域”或“索引”中的文件时,它们实际上指的是:

  • 提交中的文件HEAD
  • 加上潜在的git added 修改。

所以“暂存区没有修改”的含义是:
“暂存区与”相同HEAD


考虑到这一点,您可以重新阅读VonC 发布的图表

  • git diff将显示工作树和暂存区(索引)之间的差异;
  • 当没有进行额外的修改时,“索引”与HEAD- 因此,确实会显示和 你的工作树git diff之间的差异;HEAD
  • HEAD始终向您显示“与您的工作树之间的差异”(并忽略索引)的命令是:git diff HEAD