如何查看工作目录和暂存索引之间的差异?

How to see diff between working directory and staging index?

我们可以看到 存储库和工作目录 之间的区别:

git diff

我们可以看到 存储库和暂存索引 之间的区别:

git diff --staged

但是我们如何看待工作目录和暂存索引之间的区别?

实际上,git diff 在索引和工作树之间。碰巧的是,直到您对索引进行阶段性更改(使用 git add),其内容将与 HEAD 提交相同。

git diff HEAD 在 repo 和工作树之间。

参见365git.tumblr.com post

  • git diff - 将工作区域与索引进行比较。
  • git diff --staged - 将阶段区域与存储库进行比较。
  • git diff HEAD - 将工作区域与存储库进行比较

为了说明这一点,我更改了一个带有“Name Staged”文本的文件,然后添加了它(git 添加。)。在那之后,我再次更改了文件,现在我将文本替换为“Name Working Area”,然后 运行 以下命令:

现在你可以清楚地看到它是如何工作的了。很酷吧?

受@VonC 接受的答案的启发,除了git diff HEAD你还可以写:

git difftool --dir-diff --no-prompt HEAD

这将打开一个目录 diff,显示您的工作树和 repo 之间的差异。从那里可以很容易地查看对单个文件的更改(例如,当使用 Beyond Compare 之类的工具及其选项卡 UI)时。