这篇博客将主要学习git的分支管理。几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。首先我们进入我们的gitlearn目录,发现当前是主分支,即master分支,现在我们新建一个分支名称叫做"branchtest".


可以看到通过"git checkout -b branchtest",命令不仅创建了一个分支,并且自动切换到该分支了。该命令相当于如下两条命令,这里我在此创建一个"branchtwo"分支,并且切换到该分支:


可以看到当执行"git branch branchtwo"命令的时候,系统知识创建了一个"branchtwo"分支,并没有切换到该分支,只有执行"git checkout branchtwo"命令才真实的切换到该分支了。

        我们可以通过"git branch"来查看当前的分支:


        可以看到当前存在三个分支,一个主分支即master分支,另外两个是我们刚才新建的分支,并且在当前的分支前面会存在一个*

        下面我在"branchtwo"分支下对"learnfirst.txt"文件进行修改,然后commit到该分分支,然后通过"git checkout branchtest",切换到"branchtest"目录,通过git  status发现该分支并没有改变的地方,在通过cat learnfirst.txt查看,发现该文件在该分支下并没有发生变化。


这是因为上次的提交是在“branchtwo”上完成的,而对于"branchtest"分支,并没有发生变化,该分支的提交点还是原来的,并没有发生改变。

 现在我们要做的是把"branchtwo"分支上的修改的成果merge到"branchtest"分支上去。

        我们在当前分支, 执行"git merge  需要被merge的分支名称" ,就可以将修改的分支merge到当前分支了,如下图:


      如上图:红色框中的内容是我在"branchtwo"分支中新添加的内容,用git merge branctwo,merge到当前分支以后,发现同样发生了改变。

      如果我们此时不在需要"branchtwo"分支了,那么可以通过该命令来删除该分支:"git branch -d branchtwo",这样就删除了"branchtwo"分支。

      总结一下:

      快速查看当前分支:git branch

      创建分支:git branch 分支名称

      切换分支:git checkout 需要切换的分支名称

      删除分支:git branch -d 需要删除的分支名称

      合并某分支到当前分支:git merge 需要被合并的分支名称

       其实,我们并不是每次分支合并都是顺利的,看看下面一种情况,我刚才在"branchtest"分支合并之前删除的"branchtwo"分支修改的内容,也就是我们的branchtest分支中的"firstlearn.txt"文件被修改过了,那么现在我们通过"git checkout master"切换到"master"分支。然后修改"firstlearn.txt"文件,然后试图合并该"branchtest"分支到"master"分支试试看。(注意:在合并分支的之前必须先将所有的修改commit)


我们会发现此事git会提示我们有冲突,这是就需要我们手动合并。此事我们手动打开"fristlearn.txt"文件,内容如下:

sdfdsfsdfsafd
我是第一次使用github
sdjfklajfsa
<<<<<<< HEAD
master master
=======
hahahahhaenenennen
>>>>>>> branchtest

可以发现git用<<<<<和>>>>>符号表示不同分支的修改,我们将该文件进行修改然后保存。这时再次执行merge操作:


可以发现这次已经成功将"branchtest"分支的内容merge到"master"分支上去了。

       从上面可以看出,如果merge分支的时候,出现冲突的情况,需要我们手动解决冲突,然后在执行merge操作,同时,我们可以利用"git log --graph"来查看merge图。

        好了,今天就到这里吧,希望大家喜欢。







Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐