【问题标题】:Is the Git staging area just an index?Git 暂存区只是一个索引吗?
【发布时间】:2020-08-27 22:03:39
【问题描述】:

Pro Git 这本书说暂存区只是一个列表或索引,它说明在完成git commit 时将提交哪些文件,而现在index 这个名称通常被称为“暂存区”区域”。

但是如果我们修改文件foo.txt 已经是repo 的一部分,并使用git add foo.txt 暂存它,然后再次修改文件,现在文件既是“暂存”又是“修改”(如图所示)在git status) 中,如果我们提交,“暂存”版本将进入提交。第二次编辑不会进入。

如果“暂存区”只是一个索引——文件列表,那么它如何跟踪第一次编辑是什么?

【问题讨论】:

    标签: git git-index


    【解决方案1】:

    索引是您准备好提交的工作目录的视图。它可以看作是一种预提交状态,并不像“文件列表”那么简单。当您执行git add 时,文件(带有更改)将添加到索引中,并且在您也添加它们之前不会看到较新的更改。

    【讨论】:

      【解决方案2】:

      index 就像一个已完成工作的篮子。在任何时候你都可以add一个(部分)完成的文件到那个out basket,它会用你当前的副本替换以前的副本,所以当你最终决定commit它会使用out basket(当前的index)的内容来创建提交。

      此外,您之前的 add 将在 repo 中创建一个 blob 对象,如果需要,可以通过各种日志找到该对象。一段时间后(30 天以上),它将消失,并显示为 gc

      【讨论】:

      • 我喜欢您的 out 篮子 示例,但您根本没有提到这与分期有什么关系
      • @EthanDavis 暂存区在大多数情况下与索引相同。区别更多的是一种观点。暂存区是用户的概念视图,而索引更多是 Git 开发人员的观点(他们保留“暂存区”中的内容列表)。 Git 有很多由开发人员命名(和为)命名的东西,然后被用户误解;-)
      【解决方案3】:

      它是一个索引,而是一个修改树的列表,而不是直接的文件。见the different type of objects git handle

      【讨论】:

        【解决方案4】:

        那么,如果“暂存区”只是一个索引——一个列表,那么它如何跟踪第一次编辑是什么?

        索引是名称列表和指向内容的指针。在书中,它是页码。在 Git 索引中,它是存储库对象数据库中的对象 ID。

        这就是 Git 索引,一个路径名索引的内容指针列表。

        git add 对于一些路径名基本上是

        sha=`git hash-object -w path/to/it`
        git update-index --cacheinfo 100644,$sha,path/to/it 
        

        除了git add 检查可执行文件并将100755 用于那些,并递归添加并检查您的.gitignore 以及其他看起来通常最方便的东西。这是向对象数据库添加内容和更新索引的便捷命令。

        【讨论】:

          【解决方案5】:

          暂存区只是一个列表,也不是索引,它表示当 git 提交完成时将提交哪些文件。

          如果是这样,即一个简单的列表,git add 将永远无法像宣传的那样工作。

          相反,git add 必须在给出 add 命令时保存文件的内容。所以它快照文件,然后将这些快照放入暂存区域(也称为“索引”,恕我直言,这确实是一个相当糟糕的名称选择)。

          所以是的,事实上,这本书的陈述具有误导性和混淆性。 但这并不奇怪。许多 git 文档令人困惑且考虑不周。

          继续标记我。我确定我是对的。

          【讨论】:

          • 你错了。索引是一个索引。将其称为暂存区是为了向从未在 vcs 中遇到过这样的事情的人解释为什么要在 vcs 中出现这样的事情。
          猜你喜欢
          • 2011-08-29
          • 1970-01-01
          • 2019-01-02
          • 1970-01-01
          • 2012-04-25
          • 1970-01-01
          • 2021-01-20
          • 2011-07-13
          • 2014-03-07
          相关资源
          最近更新 更多