git索引在哪里?

时间:2013-03-12 03:41:35

标签: git

在Git中,暂存区域也称为索引。似乎要说的是,当您在工作目录中进行更改并将这些更改添加到“staging”时,git会将这些文件添加到索引文件中。打开项目/.git/index文件时,我看到一个文件,其中包含我输入时显示的文本:

git status

我可能会得到如下输出:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   Gemfile
#
no changes added to commit (use "git add" and/or "git commit -a")

但是在其他地方,例如Git Index Contents,他们会输入:

git ls-files --stage

你可以看到索引的内容..虽然这显然不是/.git/index中的内容。 .git目录中的哪个文件实际上包含此索引?我怀疑,我可能是错的..是.git / index将更改信息存储在'modified'行中,然后在输入git ls-files时 - 它正在构建一个文件列表是基于工作目录中的文件以及在此索引文件中列出的已修改的文件进行分段和散列。这是正确的吗?

1 个答案:

答案 0 :(得分:4)

.git/index处的索引文件不是文本文件,而是一个二进制文件,其中包含有关索引的必要信息,而索引。

我不明白你想用git status输出说些什么。 git status甚至输出未跟踪的文件。您是说该索引还具有未跟踪文件的知识吗?当然不是。