主干代码向分支反向合并需在分支工作副本中执行merge操作,选择“merge a range of revisions”,源url填主干地址,先test merge验证无冲突后再正式合并,冲突须人工处理并标记已解决后提交。

主干代码向分支反向合并,本质是把 trunk 上的修改“搬运”到某个已存在的 branch 上,不是简单复制粘贴,而是通过 SVN 的 merge 机制精准同步差异。操作本身不难,但关键在路径选对、范围锁准、冲突理清——做错一步,轻则白忙一场,重则覆盖分支已有逻辑。
明确操作位置和方向
合并动作发生在分支的工作副本目录中,而不是主干目录。右键点击你本地的分支文件夹(比如 /branches/v2.4.7.6),再打开 TortoiseSVN → Merge。这一步决定了“目标”是分支,“源”才是主干。如果误在 trunk 目录下操作,就变成了分支往主干合,方向完全反了。
- 操作前先更新分支:右键分支目录 → SVN 更新,确保本地分支已是最新状态
- 确认当前工作副本路径确实是分支路径,不是 trunk 或 tags
- 不要切换工作副本到 trunk 再操作——那是为其他合并准备的
选择正确的合并类型和源路径
在弹出的 Merge 窗口中,选第一项:Merge a range of revisions(合并一个版本范围)。这是最常用也最可控的方式。
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
-
URL to merge from 填主干的完整 SVN 地址,例如
https://svn.example.com/repo/trunk - 不要填分支地址,也不要填根目录或 tags 路径
- 点击 Show log 查看主干提交记录,勾选你需要合并的具体 revision(如 r1612、r1615–r1618),避免全量合并引入无关改动
测试合并再真正执行
填完信息后,先点 Test merge。这个动作不会改动你本地文件,只模拟合并过程并列出将被修改、新增或冲突的文件。
- 如果 Test merge 报告大量冲突,说明主干与分支在相同文件上有不同修改,需评估是否真要合并这些 revision
- 若只提示“Merging revisions X–Y”,且无冲突文件,则可放心点 Merge
- 合并完成后,所有变更仍只存在于本地工作副本,尚未提交到服务器
处理冲突并提交
真实合并过程中出现冲突时,SVN 会在文件中标记 和 <code>>>>>> .rXXXX 区段。这时不能跳过,必须人工介入。
- 用文本编辑器或 IDE 打开冲突文件,对照标记内容判断哪部分该保留、哪部分该舍弃
- 删掉标记行(
、<code>=======、>>>>>)和不需要的代码块 - 保存文件后,在资源管理器中右键 → TortoiseSVN → Resolved,告诉 SVN 冲突已处理
- 全部解决后,右键分支目录 → SVN 提交,把合并结果推送到服务器










