码迷,mamicode.com
首页 > 其他好文 > 详细

Git操作-分支管理(二)

时间:2015-05-03 13:27:09      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:git   解决冲突   分支策略   

解决冲突

场景:创建一个新的分支feature1,然后在README.txt文件里添加4 create a branch named feature1,然后在feature1分支上提交。提交后切换到master分支,再在master分支上将最后一行修改为create a new branch named feature1,再提交,现在,master分支和feature1分支各自都分别有新的提交:
技术分享
此时结构图是这样的:
技术分享

在这种情况下,我们尝试把两个分支合并,git merge feature1
技术分享
提示README.txt文件有冲突(conflict),需要解决冲突后再提交,此时看一下文件内容:
技术分享
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,
将冲突部分手动修改后保存:4 create a branch named feature1,再提交,发现冲突解决了:
技术分享

此时的分支结构图如下:
技术分享

然后就可以删除分支feature1了

注:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log –graph命令可以看到分支合并图。

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:
技术分享

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward模式合并就看不出来曾经做过合并。但这种模式下,删除分支后,会丢掉分支信息。通常,合并分支时,如果可能,Git会用Fast forward模式。。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息

举个例子:在feature1分支上添加一行:fast forward,然后提交到feature1分支,切换到master分支,合并feature1分支,注意–no-ff参数,表示禁用Fast forward,命令$ git merge --no-ff -m "merge with no-ff" feature1,因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
合并后,我们用git log看看分支历史:

$ git log --graph --pretty=oneline --abbrev-commit
*   7825a50 merge with no-ff
|| * 6224937 add merge
|/
*   59bc1cb conflict fixed
...

注意

如果在master分支上修改内容后但未提交,此时要切换到其它分支会出错:
技术分享

Git操作-分支管理(二)

标签:git   解决冲突   分支策略   

原文地址:http://blog.csdn.net/changjiangbuxi/article/details/45457873

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!