我试图用像复位和结账这样的命令来解决问题。我一直在使用uncaught injector issues with bundled js,但我无法理解一些概念。命名指数如何真正起作用。
例如,假设我检查一个包含文件的仓库,其中包含一堆文本,名为“a.txt”。如果我做了一些修改,然后运行git diff
,我会看到文件是什么以及它现在是什么之间的变化。我了解到我正在看到工作树和索引之间的变化;这是我迷路的地方。
如果git diff
向我显示了我的工作树和索引之间的区别,那么由于我的索引为空,整个文件是不是会添加?或者当没有在索引中找不到匹配文件的条目时,是否存在某种对HEAD的引用?
答案 0 :(得分:1)
您的索引不为空;当您签出分支/提交时,索引将填充该提交/分支的内容。它不是HEAD的引用,因为它是HEAD的副本。这就是为什么当你做git diff
时,你没有看到一堆新增内容;所有这些文件都已在索引中。
答案 1 :(得分:0)
索引是一个列表,由路径名索引,位于有趣路径的存储库内容。当您结帐时,索引会加载每个签出路径的条目以及检出的内容。
当您git add
时,您添加的内容将被放入存储库,并且该路径的索引条目将更新为指向该内容。这真的就是它的全部内容:它只是一个列表。 git commit
在您需要时为索引内容写入提交。
所以默认" git diff"是上次签出或添加的内容,以反映您的工作树中的内容。