git分支管理机制

摘要

这篇文章主要介绍一下git的分支管理机制,用形象的图片来表明git的分支是如何来实现的。实际上,git分支管理机制主要依赖于指针的变化

分支的创建:

即创建一个指向HEAD当前指向的分支、当前版本的指针。

说明:此时HEAD指向master分支f30ab版本,那么新创建的testing分支的指针也会指向master分支f30ab版本,实际上是创建的分支的指针会指向HEAD指针指向的分支所在的版本

分支的切换:


 说明:切换分支时,仅仅是切换一下HEAD指针的指向,从原分支指想切换的分支

版本的提交


 说明:若此时在testing分支上提交了版本,则只会使该分支的指针向后移动,不会影响其他分支,如上图所示,其他分支的指针指向并没有发生变化

冲突的产生


说明:在testing分支修改后,再将HEAD切换至master,然后在master上修改相同的文件,然后再master分支上提交,就会形成下面的局面:这时就有可能产生冲突,这合并版本的时候就需要解决冲突。

和SVN的比较

  SVN在创建分支的时候是将所有文件复制一份,而git仅仅是创建一个指向当前版本的指针,因此效率很高;Git中分支之间的切换仅仅是HEAD指针的变化,效率也很高;
综上:Git的操作很依赖于HEAD指针的变化