svn文件冲突本质是本地与服务器版本不一致,需先同步再合并:用svn status识别c状态文件,查看.mine/.rold/.rnew三文件及主文件中的冲突标记,手动编辑保留合理修改并删除标记,再用svn resolve --accept working等命令标记解决,最后svn commit提交并svn update验证。

遇到“文件冲突无法提交”,本质是本地修改与服务器最新版本不一致,SVN 拒绝覆盖式提交。核心动作不是强行推送,而是先同步、再合并、最后确认。
快速识别冲突文件
运行 svn status,看到状态为 c(conflicted)的文件就是冲突目标。此时 SVN 会自动生成三个辅助文件:
- file.txt.mine:你本地修改后的内容
- file.txt.rOLD:你更新前的基准版本(如 r100)
- file.txt.rNEW:服务器上已提交的新版本(如 r101)
主文件 file.txt 中会包含类似 和 <code>>>>>>> .r101 的标记段,这就是需要人工判断合并的位置。
手动合并冲突内容
用文本编辑器打开主文件,逐段检查冲突标记内的差异:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
- 保留你改的合理部分,删掉不需要的旧内容
- 参考 .mine 和 .rNEW 文件,确认逻辑是否兼容
- 对函数、配置项、注释等结构化内容,优先保证功能完整和语法正确
- 保存前务必删除所有 >>>>>> 行
标记冲突已解决
合并完成后,必须显式告诉 SVN 冲突已处理,否则仍无法提交:
- 推荐命令:svn resolve --accept working file.txt(表示你已手动整合完毕)
- 若确定只保留自己的修改:svn resolve --accept mine-full file.txt
- 若完全采用服务器版本:svn resolve --accept theirs-full file.txt
执行后,.mine、.rOLD、.rNEW 文件会自动清除,svn status 中该文件状态恢复为 M(modified)。
提交并验证结果
标记解决后,正常提交即可:
- svn commit -m "合并冲突:更新XX模块逻辑" file.txt
- 提交成功后,建议立即执行 svn update 确保工作副本与仓库一致
- 若团队频繁冲突,可考虑在关键文件上使用 svn lock 预占编辑权










