Git Index是工作目录和仓库之间的一个暂存区域。它是用来建立一组你想一起提交的修改。为了更好地理解 Git 索引,首先要理解工作目录和仓库。
在 Git 中,有三个地方可以存放文件变化,它们是工作目录、暂存区域和仓库。为了更好地理解Git索引,首先让我们快速浏览一下这些地方。
工作目录
当你在你的项目上工作并做了一些改变时,你在处理你的项目的工作目录。这个项目目录在你的计算机的文件系统中是可用的。你所做的所有修改都将保留在工作目录中,直到你把它们添加到暂存区。
暂存区
暂存区域可以说是你下一次提交的预览。当你创建一个git提交时,Git会将暂存区中的修改作为一个新的提交。你可以在暂存区中添加或删除修改。暂存区域可以被看作是一个真实的区域,Git在那里储存了修改。
虽然,Git 并没有一个专门的暂存目录来存储一些代表文件变化的对象(Blobs)。取而代之的是,它使用一个叫做index的文件。
仓库
在Git中,Repository就像一个数据结构,被GIt用来存储一组文件和目录的元数据。它包含了文件的集合,以及对这些文件的修改历史。Git中的仓库被认为是你的项目文件夹。一个仓库有所有与项目有关的数据。不同的项目有不同的存储库。
你可以通过git status命令检查索引中的内容。git status 命令可以让你看到哪些文件已被暂存,哪些文件已被修改但尚未暂存,以及哪些文件完全没有被追踪。缓存的文件意味着,它目前在索引中。请看下面的例子。
语法:
$ git status
输出:
在给定的输出中,status命令显示的是索引。
正如我们前面提到的,索引是一个文件,而不是一个目录,所以Git不会将对象存储在其中。相反,它存储的是我们仓库中每个文件的信息。这些信息可能是
- mtime: 它是最后一次更新的时间。
- file:它是文件的名称。
- Wdir: 工作目录中的文件版本。
- Stage: 索引中的文件版本。
- Repo: 文件在版本库中的版本。
最后,Git 创建你的工作目录,以匹配 HEAD 所指向的提交内容。