摘要
这篇文章主要介绍一下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指针的变化