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分支上修改内容后但未提交,此时要切换到其它分支会出错:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值