Git Diff:索引是否存储了头部内容的引用?

时间:2015-06-22 17:02:04

标签: git

我试图用像复位和结账这样的命令来解决问题。我一直在使用uncaught injector issues with bundled js,但我无法理解一些概念。命名指数如何真正起作用。

例如,假设我检查一个包含文件的仓库,其中包含一堆文本,名为“a.txt”。如果我做了一些修改,然后运行git diff,我会看到文件是什么以及它现在是什么之间的变化。我了解到我正在看到工作树和索引之间的变化;这是我迷路的地方。

如果git diff向我显示了我的工作树和索引之间的区别,那么由于我的索引为空,整个文件是不是会添加?或者当没有在索引中找不到匹配文件的条目时,是否存在某种对HEAD的引用?

2 个答案:

答案 0 :(得分:1)

您的索引不为空;当您签出分支/提交时,索引将填充该提交/分支的内容。它不是HEAD的引用,因为它是HEAD的副本。这就是为什么当你做git diff时,你没有看到一堆新增内容;所有这些文件都已在索引中。

答案 1 :(得分:0)

索引是一个列表,由路径名索引,位于有趣路径的存储库内容。当您结帐时,索引会加载每个签出路径的条目以及检出的内容。

当您git add时,您添加的内容将被放入存储库,并且该路径的索引条目将更新为指向该内容。这真的就是它的全部内容:它只是一个列表。 git commit在您需要时为索引内容写入提交。

所以默认" git diff"是上次签出或添加的内容,以反映您的工作树中的内容。