我对Git中登台目录(Git Index)的命名感到困惑.
是否有任何特殊含义,称为指数?为什么不调用Cache /或Temp目录以便我们更容易理解?
对我来说,索引是帮助我们更快地搜索的东西,比如DBMS中的索引,它与暂存区域有什么关系?
我做了一些谷歌搜索,但仍然没有太多的想法.ref链接Git索引
Von*_*onC 24
主要的Git维护者Junio C. Hamano的文章对于掌握缓存和索引之间的区别是有益的 :(
强调我的)
当Linus开始编写git时,他的目的是让他重现他在BitKeeper之前使用的原始"tarball and patches"工作流程所产生的每个中间状态.
从2.6.12 tarball开始,他排队patch-1,patch-2,... so 2.6.12本身,2.6.12应用patch-1,2.6.12同时应用patch-1和patch-2,成为三个版本.但是,如果你每天必须洗掉数百个补丁,这个数字就不会明显扩大.于是他发明了"目录缓存"; 作为一个概念,这大致对应于今天git中的"树"对象:一组记录,每个记录都是整个目录结构所包含内容的紧凑表示.
构建它的方法是"将内容添加到缓存中,或更新缓存中的内容".承载此类版本控制记录集合的控制目录名为"
.dircache"(.git一段时间后重命名为" ").
有一个名为".dircache/index" 的文件,该文件的内容在C中以名词"cache" 命名的一组变量中被读取和操作.
那时候,我们今天称之为索引的概念,一个缓冲区来构建你想要写成树对象的内容集合,被称为"缓存".
每个人都可以互换地谈论"缓存"和"索引",因为记录"cache" 中的内容的文件被命名为"index".它(它仍然是)一个索引,允许您通过为其提供路径名来查找缓存中的内容.随着越来越多的人开始使用git而根本不必阅读其代码,出于显而易见的原因,使用"索引"这个词变得更加普遍.
作为文件系统上的东西,它比C源代码中的变量名更加明显.
最后,当我们解释使用git作为最终用户时,我们停止使用"cache"作为名词来命名我们今天所谓的"索引".
当我们想在讨论git实现的上下文中讨论内部数据结构时,"cache"这个词仍然被用作名词(例如"让我们让程序同时使用多个缓存") ).在最终用户级别,"缓存"目前仅用作形容词 ; "缓存",意思是"内容缓存在索引中,而不是工作树中的内容".
我们本可以称之为"索引",但"缓存内容"是一个已经确定的短语,从很早就意味着确切的概念,我们不需要另一个意思相同的词.[...]在早些时候,"向索引添加新文件"和"使用新内容更新索引中已有的文件"之间存在区别.
[...] git的现代(和中世纪)版本使用"git add".我们本可以诚实地称之为"更新或添加到索引add"的行为,但是"git training"行业中的一些人开始将该索引教授为"下一次提交的临时区域",并且作为一种不可避免的后果,动词"to stage"开始出现在许多文档中,意思是"向索引添加内容的行为".
我有时会自己使用这个动词,但只有当我怀疑观众可能首先从这些新人那里学习git时.严格来说,这是git词汇表中一个冗余且相当新的词.