你真的会解决代码合并冲突么?-创新互联

先来了解下什么是冲突吧。冲突就是代码 String str="aaaa" 被同时修改,一个要变成String str="bbbb";一个要变成String str="cccc";这就在代码合并的时候就带来了冲突。如果代码合并是从主干rebase到分支,如果出现冲突,都是以主干为准(以保证已有的功能不受到影响),就会出现主干代码强制覆盖分支的代码。出现冲突后有4个文件(以pom.xml文件为例):

因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,创新互联在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到小程序开发,软件开发,成都app软件开发公司,十余年企业网站建设服务经验,为企业提供网站设计,网站托管一条龙服务.为企业提供成都全网营销推广,按需开发网站,原创设计,十余年品质,值得您的信赖.

  1.pom.xml            ---------合并后的文件,如果有冲突会有<<<<<<<冲突提示符

  2.pom.xml.merge-left.r1298    ---------主干的前一个版本,也就是计算是否有冲突的根文件

  3.pom.xml.merge-分支       ---------本地分支的代码,也就是你要求rebase主干的分支代码

  4.pom.xml.merge-来源.r1313    ---------主干的代码

有些人认为解决冲突只要看1中的pom.xml中的冲突提示符就够了。然后对有冲突的地方一一解决就够了。如下图:

  你真的会解决代码合并冲突么?

  实际上只是看这个是远远不够的。有这样的一种情况。String str="aaaa",被同时修改,trunk上已经是String str="bbbb";本地分支又被修改为String str="cccc";另外一个变量 String str2 = "aaaa2";trunk上没有变化,只是本地分支被修改为了String str2="cccc2";这个时候svn会将这个文件视为有冲突,因为str 即想变为bbbb又想变为cccc,会计算为冲突。但是str2从冲突的定义上来看不是一个冲突,因为只有一个地方修改。svn在代码合并的时候,发现这个文件有冲突会直接用trunk的内容覆盖分支的内容,并且将str的地方打上冲突提示符。但是str2的地方就不会打上冲突标识符,因为它不是一个冲突。因此这个文件合并后就是这样的:

  你真的会解决代码合并冲突么?

  如果只是按照冲突提示符去合并就会出现本地代码丢失的场景。那么正确的合并冲突解决方法应该是什么呢?应该是根文件(上面提到的pom.xml.merge-left.r1298),分支文件(pom.xml.merge-分支),trunk文件(pom.xml.merge-来源.r1313)进行三方比较。比较工具我使用的是Beyond Compare 3。如下图所示:

  你真的会解决代码合并冲突么?

你真的会解决代码合并冲突么?

  从上图可以看出,真正出现冲突的是version1会打上冲突提示符,version是直接被trunk的覆盖。合并后的文件如下图:

  你真的会解决代码合并冲突么?

  合并冲突的时候应该对这三个文件进行三方比较,具体操作可以使用上面标红的直接定位。合并的时候一定要清楚那些是需要保留分支的,那些是需要保留主干的。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


名称栏目:你真的会解决代码合并冲突么?-创新互联
网站URL:http://scyanting.com/article/dghccs.html