#5.Git的工作区,暂存区和版本库之间的关系
在Git中,与传统的集中式版本控制系统相比,分布式的Git比SVN多一个【暂存区】的概念。
|-工作区(Working Directory)
所有的版本控制工具,都有工作区的概念,在我们硬盘上的文件仓库中每一个目录就是我们所说的工作区(不包含隐藏的.git目录/.svn目录...),如下图就是一个工作区
|-版本库(Repository)
工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
(援引自:http://www.liaoxuefeng.com 廖雪峰的官方网站)
那么stage是做什么的呢?上图中,显示了我们使用git add命令把工作区的文件添加到版本库中stage暂存区,可以看出stage中的文件是工作区的子集,如果想版本库中文件更新,必须使用git commit命令将暂存区中文件刷新到master分支中(准确的说,应该是HEAD指针指向的分支)。
从上图可以得出2个结论:
#1.stage暂存区只在正向的提交过程中,方便记录工作区所有的变动,再一次性提交到库中;
#2.要想自己的工作区的变动提交到库中,必须使用2次命令,add和commit