SVN 冲突解决实战
在团队协作开发中,多人同时修改同一份代码难免引发冲突。SVN 虽然稳定,但处理不当会导致代码丢失或构建失败。掌握正确的冲突解决流程,能显著提升协作效率。
冲突类型概览
SVN 中的冲突主要分为三类:
- 文件内容冲突:最常见,两人修改了文件的相同行或相邻区域。
- 目录树冲突:一方删除了目录,另一方在该目录下新建了文件。
- 属性冲突:对文件权限(如 executable)的设置不一致。
解决文件内容冲突
当执行 svn update 拉取最新代码时,若发现冲突,工作副本会生成三个临时文件:.mine, .rOLD, .rNEW,并在原文件中插入冲突标记。
打开冲突文件,你会看到类似这样的结构:
<<<<<<< .mine
你的修改内容
=======
服务器上的修改内容
>>>>>>> .r123
处理步骤如下:
- 保留所需内容:根据业务逻辑决定保留哪部分代码,或者将双方修改合并。
- 清理标记:删除所有
<<<<<<<,=======,>>>>>>>标记行。 - 标记解决:确认无误后,运行
svn resolved <文件名>告诉 SVN 该冲突已处理。 - 提交变更:最后执行
svn commit将合并后的代码上传至仓库。
其他冲突处理
对于目录树或属性冲突,通常也需要先手动调整文件状态,再使用 svn resolved 标记。如果不确定具体操作,建议先查看 svn status 的输出状态码。
避坑建议
- 更新前先提交本地未提交的代码。
- 遇到复杂冲突时,及时与同事沟通,避免重复劳动。
- 重要修改前做好本地备份,防止误操作覆盖。

