Git操作区域

Git通常是工作在三个区域上的,即工作区、暂存区和历史区。其中,工作区就是开发者平时工作、修改代码的区域;历史区是用来保存各个版本的区域;暂存区则是Git的核心所在。

暂存区实际上保存在Git根目录下的.git隐藏文件夹中的一个叫index的文件中。开发者所做的代码提交记录都保存在这个文件中。

当我们向Git仓库提交代码时,执行add操作实际上是将修改记录保存到暂存区。例如,笔者修改一下README文件并执行git add操作,再通过gitk查看历史,结果如图2.6所示。

Git操作区域 - 图1 图2.6 git add后的操作历史

可以发现执行add操作之后,Git在本地生成了一个记录。但是还没有commit,所以当前HEAD并没有指向最新的修改,修改还保存在暂存区。

下面再执行commit操作,继续通过gitk查看历史记录,结果如图2.7所示。

Git操作区域 - 图2 图2.7 git commit后的操作历史

此时,HEAD已经移到最新的修改上了。也就是说,刚刚commit的内容生成了一个新的commit id。

由此可见,git commit操作就是将暂存区的内容全部提交。但如果内容不add到暂存区,那么commit也就不会提交修改内容。

Git操作区域 - 图3这里需要说明一个概念,Git管理的是修改内容而不是文件,每个SHA-1的值也是根据内容计算出来的。