您的位置:首页 > 其它

git学习(分支管理)

2015-04-26 19:29 204 查看
这篇博客将主要学习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图。

好了,今天就到这里吧,希望大家喜欢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: