从这张图片中,提交是指向根树的指针,根树是指向其他树和 blob 的指针。但是什么是正确的索引视图?
问题:
它是具有文件夹结构的类似树状结构还是只是 blob 的平面视图?
如果索引是树状的,那么提交和索引之间有很大区别吗?
索引看起来更像是完整快照还是差异?
从概念上讲,索引是一棵树。它存储了 HEAD 的状态,反映了所有的变化git add
。提交时,索引只是成为提交中的树。您可能会问索引实际上是如何实现的?我猜它确实是一棵树,但我不确定。
与此问题相同的答案:Decoding Git index file using C#
此处描述了 Git 索引文件格式:http: //git.kernel.org/?p=git/git.git;a=blob;f=Documentation/technical/index-format.txt;hb=HEAD
索引是暂存文件的集合。或者我们可以说所有添加的文件。缓存是索引的过时名称,对我来说更容易理解。
提交后,索引变为 HEAD,即当前分支的头部。
如果要丢弃索引中的一个文件,可以使用
$git reset HEAD <filename>
它来完成。