You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地无提交将一分支工作副本合并至另一分支,求SVN三路合并命令

SVN三路合并WC_A到WC_B的正确操作

嘿,完全懂你长期泡Perforce,突然碰SVN会有点手生的感觉~针对你说的场景,我给你理清楚该怎么操作:

先再确认下你的场景:

  • WC_A是基于Branch_A(从trunk_revx分出来的)的工作副本,里面有你做的变更
  • WC_B是新检出的Branch_B(从trunk_revy分出来的)的工作副本,是你要合并的目标

分两种情况处理:

情况1:WC_A的变更已经提交到Branch_A仓库

这种情况需要明确共同祖先版本(也就是Branch_A和Branch_B最初分叉的那个基线,比如trunk_revx的版本号,记为REV_COMMON):

  1. 先拿到WC_A对应的Branch_A的最新版本号:
    切换到WC_A目录,执行:
    svn info | grep Revision
    
    记下这个版本号,比如REV_A。
  2. 切换到WC_B的根目录,执行三路合并命令:
    用仓库URL的方式(更稳妥,避免本地路径问题):
    svn merge ^/Branch_A@REV_COMMON ^/Branch_A@REV_A .
    
    或者用本地WC_A的路径:
    svn merge ../WC_A@REV_COMMON ../WC_A@REV_A .
    
    这里的.代表当前WC_B目录,命令会以REV_COMMON为基准,把Branch_A从REV_COMMON到REV_A的所有变更合并到WC_B里。

情况2:WC_A的变更还没提交到仓库(仅本地修改)

这种情况更简单,直接在WC_B的根目录执行:

svn merge ../WC_A .

SVN会自动识别WC_A(Branch_A)和WC_B(Branch_B)的共同祖先,自动完成三路合并,不需要手动指定版本号。

合并后的后续操作

  1. 执行svn status查看是否有冲突文件
  2. 如果有冲突,手动编辑冲突文件解决矛盾,然后执行svn resolved <冲突文件名>标记冲突已解决
  3. 最后提交合并结果:
    svn commit -m "合并WC_A的变更到Branch_B"
    

内容的提问来源于stack exchange,提问作者Johann Studanski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:44:03