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 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。


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



        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。


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


        master使用git cherry-pick命令仅仅合入next分支中C4,而不合入C6。





五、合并冲突

        在合并分支时,常常出现合并冲突,使用git status查看冲突原因,解决冲突后生成一个新的commit,然后提交给commit就可以。


        git在冲突文件里显式的标示出了冲突内容。

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




六、总结

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


版权声明:

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


posted on 2017-05-09 08:31  ljbguanli  阅读(214)  评论(0编辑  收藏  举报