'git diff'文档指的是'source'和'destination',但没有说明哪个对应于索引


"git diff"的文档指的是"源"文件(默认输出前缀

为"a/")和"目标"文件(默认输出前缀为"b/")。我的问题是,"源"是指索引(暂存区)中的文件,"目标"是指工作目录中的文件,还是相反?

答案是否定的,也是肯定的。1

git diff可以将事物与您的暂存区域进行比较,但它并不总是这样做。让我们考虑这些常见情况:

  1. git diff,没有额外的参数。 这意味着"将与索引关联的树与当前工作目录中的树进行比较"。 在这种情况下,"源"是索引。

  2. git diff HEAD,没有额外的参数。 这意味着"将HEAD中的树与工作目录中的树进行比较"。 在这种情况下,根本不使用索引。 如果命名特定修订或分支,也是如此。

  3. git diff --cached,没有额外的参数。 这意味着"将HEAD中的树与索引中的树进行比较"。 在本例中,"目标"是索引。

  4. git diff --cached <rev> :这与#3相同,但使用指定的修订版作为源。

  5. git diff <rev1> <rev2> :这将比较两个指定修订版的树,忽略索引和工作树。

因此,有时

暂存区域是源或目标,有时根本不使用。


据说:不要去找精灵寻求答案,因为他们会说不和是。

关系。源是索引,目标是工作。我所要做的就是查看工作文件。哎呀!全脑屁。

最新更新