SVN冲突的解决方法
当多人同时修改同一个文件的相同部分时,SVN就会产生冲突(conflict)。以下是解决SVN冲突的步骤和方法:
基本解决步骤
-
更新代码:首先执行
svn update,此时会提示哪些文件有冲突svn update -
识别冲突文件:冲突的文件会被标记为"C",同时会生成几个相关文件:
- filename.ext.mine - 你的本地修改版本
- filename.ext.rOLDREV - 冲突前的版本(基础版本)
- filename.ext.rNEWREV - 服务器上的最新版本
-
手动解决冲突:
- 直接编辑冲突文件(有冲突的部分会被特殊标记)
- 或者使用合并工具解决冲突
-
标记冲突已解决:
svn resolved filename.ext -
提交修改:
svn commit -m "解决冲突"
详细解决方法
方法一:手动编辑解决
- 打开冲突文件,查找"<<<<<<<", “=======”, ">>>>>>>"标记
- 这些标记之间的内容就是冲突部分:
- <<<<<<< .mine 和 ======= 之间是你的修改
- ======= 和 >>>>>>> .rNEWREV 之间是他人的修改
- 根据需要保留合适的代码,删除所有冲突标记
- 保存文件后执行
svn resolved
方法二:使用合并工具
-
配置你喜欢的合并工具(如Beyond Compare, KDiff3等)
svn config --edit在配置文件中设置merge-tool-cmd
-
使用合并工具解决冲突:
svn merge --tool toolname filename.ext
方法三:选择特定版本
-
保留你的版本:
svn resolve --accept mine-full filename.ext -
使用服务器版本(放弃你的修改):
svn resolve --accept theirs-full filename.ext -
保留合并后的版本(通常需要进一步编辑):
svn resolve --accept working filename.ext
预防冲突的建议
- 频繁更新代码,减少与他人的修改间隔
- 修改文件前先执行
svn update - 团队成员分工明确,减少对同一文件的修改
- 使用
svn lock锁定不希望他人修改的文件 - 小步提交,避免长时间不提交大量修改
特殊情况处理
- 二进制文件冲突:无法自动合并,必须选择保留哪个版本
- 目录冲突:当文件和目录重名时发生,需要手动决定保留文件还是目录
- 属性冲突:文件属性修改冲突,使用
svn propedit解决
记住解决冲突后一定要执行svn resolved命令,否则SVN会认为冲突依然存在。
1962

被折叠的 条评论
为什么被折叠?



