git学习(2)---分支操作

一、目的

        本文将介绍git分支的操作,包括新建和删除分支、查看和切换分支、合并分支和合并冲突等内容。
        本文涉及到的所有操作都是在Ubuntu14.04环境中进行的,git版本是1.9.1。



二、新建和删除分支

        使用git branch name命令新建一个名为name的分支;使用git branch -d name命令删除一个名为name的分支。

        git默认的分支叫做master,在实际的项目中一般还会存在一个next分支。master分支作为主干版本,接受bugfix需求;next分支用来集成测试,接受开发完毕的新特性。此外,还会存在一些topic分支,每个topic分支用来实现一个新特性,新特性开发完成后,由next分支的维护者合并到next分支中,然后topic分支就可以被删除了。

git学习(2)---分支操作_第1张图片


三、查看和切换分支

        使用git branch命令查看所有分支,并且前面标有星号的分支代表当前分支;使用git checkout name命令切换到name分支。

        git使用HEAD索引指向当前分支,例如,版本中存在master和next两个分支,使用git checkout next命令切换到next分支后,HEAD就指向了next;使用git checkout master命令切换到master分支,HEAD就指向了master。



四、合并分支

        常用的分支合并命令有:git merger、git rebase和git cherry-pick。


        1、git merger
        git merger按照时间顺序,将各个分支上的commit逐步合入,得到一个新的commit。

        例如,版本存在master和next两个分支,在C3之后master提交了一个C5,next提交了一个C4和C6。

git学习(2)---分支操作_第2张图片

        master使用git merger next将next分支的C4和C6合入到master中;首先,git按照commit提交的时间顺序,在C3之后合入C4;然后,再接着合入C5和C6;经过如此计算后,最终得到C7。

git学习(2)---分支操作_第3张图片


        2、git rebase
        git rebase首先缓存当前分支的commit,然后合入待合入分支的commit,最后再合入被缓存的commit。
        例如,版本存在master和next两个分支,在C3之后master提交了一个C5,next提交了一个C4和C6。
        next使用git merger master将master分支的C5合入到next中;首先,git缓存next分支的C4和C6,然后合入master分支的C5;最终再合入被缓存的C4和C6。
git学习(2)---分支操作_第4张图片

        3、git cherry-pick
        git cherry-pick命令用来合入分支中某个特定的commit。
        例如,版本存在master和next两个分支,在C3之后master提交了一个C5,next提交了一个C4和C6。
        master使用git cherry-pick命令只合入next分支中C4,而不合入C6。

git学习(2)---分支操作_第5张图片


五、合并冲突

        在合并分支时,经常出现合并冲突,使用git status查看冲突原因,解决冲突后生成一个新的commit,然后提交给commit即可。
        git在冲突文件中显式的标示出了冲突内容。

        例如,使用<<<<<<<< HEAD表示当前分支的冲突内容,使用>>>>>>>>>>> next表示next分支的内冲突容,========划分冲突界线。由用户手动解决该冲突内容,并删除<<<<<<<<和>>>>>>>>>标示,生成一个新的commit,然后提交即可。




六、总结

        本文介绍了git最大的特性和优势:分支技术。主要介绍了分支的新建和删除、分支的查看和切换,重点介绍了分支合并和冲突解决。


版权声明:

        原创作品,如非商业性转载,请注明出处;如商业性转载出版,请与作者联系。

你可能感兴趣的:(git,git,git,git,merge,checkout,cherry-pick,rebase)