GIT的工作原理是什么?

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> GIT的工作原理是什么?

读完这篇博文,读者将会对git的工作原理有一个基础性的见解,对于commit,add,push等指令也会更加容易地理解.

对于这篇文章的记录和写作思路,都是借鉴于廖雪峰大神的个人网站上的git学习资料的,如有个人理解偏差,谢谢指出。

 

在GIT中,与SVN等集中式版本控制不同的是,有一个暂存区的概念。这个暂存区称之为stage.

如下,是一个工作区

GIT的工作原理是什么?

 

那么版本库在哪里呢?版本库即Repository,仓库,在工作区中有一个隐藏的目录, .git目录,这个目录就是git的版本库,它不属于工作区。

在.git中,也就是版本库中,存在着许多的东西。最主要的是它其中有一个stage(暂存区),还有一个或者多个分支,包括master分支和其他分支,比如dev分支issue分支feature分支等。

在git的系统中,会为用户自动创建一个HEAD指针,默认指向master分支

如下图:

GIT的工作原理是什么?

 

这里大家便能理解为什么修改一个文件之后需要先add在commit了。

我们可以多次add文件,然后一次性commit到分支。

我们编辑的是当前工作区,编辑完成之后使用add将修改的文件添加到stage,然后从stage使用commit提交到分支中,之后再考虑从分支push到远程仓库。

 

下面我们通过一个练习来体验一下整个过程:

第一步,我们在工作区新增一个test.txt,然后编辑其中的内容:

GIT的工作原理是什么?

然后使用$ git status查看当前状态

GIT的工作原理是什么?

提示中说有untracked files.意思就是当前文件在工作区中被增加了,改动时会提醒modified,删除会提示deleted,就像这样(题外话)

GIT的工作原理是什么?

 

查看了状态之后,我们需要首先使用$ git add T.txt(对应上面test.txt,因为我把test.txt删除了重新建的T.txt)将untracked的文件add到stage,从工作区转移到暂存区。

GIT的工作原理是什么?

 

这时,使用git status命令,我们将发现Changes to be committed

GIT的工作原理是什么?

我们将T.txt加入了stage,但是并没有commit

下面的两个文件一个修改了,对应licence.txt,一个被删除了,对应test.txt

但是我只是在工作区做了修改,并没有add或者rm到暂存区,接下来我来处理一下这两个文件,分别对应add licence.txt到暂存区,然后撤销删除test.txt:

GIT的工作原理是什么?

 

接着,最后一步commit将暂存区中的内容提交到master分支:

GIT的工作原理是什么?