千家信息网

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

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,先来了解下什么是冲突吧。冲突就是代码 String str="aaaa" 被同时修改,一个要变成String str="bbbb";一个要变成String str="cccc";这就在代码合并的时候就
千家信息网最后更新 2025年12月03日你真的会解决代码合并冲突么?

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

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的覆盖。合并后的文件如下图:

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

冲突 文件 分支 代码 主干 提示符 时候 提示 地方 只是 三方 也就是 内容 同时 就是 来源 清楚 三个 上图 不够 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 黑龙江大学数据库试题 软件开发的计量单位是什么 马鞍山精益管理软件开发 公共信息网络安全监察简称 微机室教学管理服务器 成华区本泰新软件开发工作室 网页信息采集软件开发 软件开发周期中配置管理 连接开放网络安全性 张店化工软件开发报价 互联网项目网络安全 通信技术在网络技术中的作用 数据库维护用什么软件 戴尔服务器开机按f12没出界面 郑州电脑软件开发价格表 公司网络安全案例及分析 基于数据库做分布式锁 网络安全道德班会的主持稿 达梦数据库导出结果集 政府部门网络安全科面试试题 进一步加强网络安全设备维护 数据库归档日志分析 苹果总是出现无法验证服务器身份 WIN11搭建FTP服务器 jsp中连接数据库的方式 戴尔服务器支持固态硬盘吗 阜阳服务器机箱定做 技术好的浪潮服务器代理商 ios 白板软件开发 服务器地址是什么
0