直接用 svn merge -r N:M 合并指定版本范围修改,实际合并的是从 N+1 到 M 的提交;需通过 svn log 和 svn mergeinfo 确认版本号与未合并范围,先 dry-run 验证再提交,并注明合并来源。

直接用 svn merge -r N:M 就能合并指定版本范围的修改,关键在于准确识别起止版本、确认源路径、避免重复合并。
明确版本范围含义
SVN 的 -r N:M 表示“将源路径在版本 N 到 M(含)之间产生的所有变更,应用到当前工作副本”。注意:
- N 是起始比较版本,M 是结束版本,实际合并的是 从 N+1 到 M 的所有提交(即 rN+1、rN+2 … rM)
- 例如
svn merge -r 100:105合并的是版本 101~105 的五次修改 - 若只合一个版本(如 r108),写成
-r 107:108或更简洁地用-c 108
操作前先查清可用版本
别凭记忆输数字,用日志确认真实修订号和内容:
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
-
svn log -l 20 ^/branches/feature-login查看分支最近20条提交 -
svn log --stop-on-copy ^/branches/feature-login只显示该分支创建后的记录 -
svn log -v -r 105:108 ^/branches/feature-login明确看到这四次提交改了哪些文件 -
svn mergeinfo --show-revs eligible ^/branches/feature-login列出尚未合并到当前目录的版本,防止遗漏或重复
执行合并并验证
进入目标工作副本目录(如 trunk 对应的本地文件夹),运行命令:
- 基础语法:
svn merge -r 105:108 ^/branches/feature-login - 指定目标路径(可选):
svn merge -r 105:108 ^/branches/feature-login ./src - 先试跑不真改:
svn merge --dry-run -r 105:108 ^/branches/feature-login,检查输出是否有冲突预警或意外文件 - 合并后运行
svn status查看哪些文件被修改(M)、新增(A)或冲突(C)
提交与后续处理
合并只是本地操作,必须提交才能生效:
- 手动解决冲突文件(编辑标记、测试通过)
- 确认无误后执行:
svn commit -m "merge r105:108 from feature-login branch" - 提交信息中注明合并范围和来源,便于追溯
- 如需后续再合新版本,仍建议用
svn mergeinfo确认已合并边界,避免跳过或重叠










