git中的分支,其实本质上仅仅是个指向commit对象的可变指针。git会使用master作为分支的默认名称。在若干次提交后,你其实已经有了一个指向最后一次提交对象的master分支,它在每次提交的时候都会自动向前移动,如图:
从这张图我们大概就可以看出分支其实就是从某个提交对象往回看的历史。
我们知道,git是通过创建一个新的分支指针来创建一个新的分支的。比如,新建一个testing分支,可以使用如下命令:
git branch testing
这样我们就在当前commit对象上新建了一个分支指针,如图:
我们或许想知道你当前在哪个分支上工作,其实很简单,git保存着一个名为HEAD的特别指针,这个HEAD和其他版本控制系统的HEAD不相同。在git中,它是一个指向你正在工作中的本地分支的指针。运行git branch 命令,仅仅是建立了一个个新的分支,但是不会自动切换到这个分支中去,所以,在这个例子中,我们还在master分支里工作。
要切换到其他分支,可以执行git checkout命令。我们现在转换到testing分支:
git checkout testing
这样,HEAD就指向了testing分支:
下面章节详见
git浅谈分支二http://shenyuc629.iteye.com/blog/1700163