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

本地无提交跨分支工作副本合并的TortoiseSVN命令咨询

解决SVN三方合并迁移变更的问题

作为长期用Perforce的人,刚捡回SVN确实会有点别扭,不过咱们一步步理清楚你的场景:你要把带本地变更的WC_A,合并到全新检出的WC_B(Branch_B的工作副本),核心就是用SVN的三方合并逻辑,找到共同基线再合并差异。

先做个关键准备

如果WC_A的变更还没提交到版本库,建议先提交一下——这样变更被版本化后,合并操作会更安全、可追溯:

  • 进入WC_A目录,执行:
    svn commit -m "提交WC_A的本地修改"
    
    提交后记一下新生成的版本号(比如revN,可以用svn info查看)。

三方合并的正确命令

接下来切换到WC_B的根目录,根据你的分支基线情况选择对应命令:

情况1:Branch_B是从trunk_revy分支出来的

如果WC_A和WC_B的共同起点是trunk_revy,那直接合并trunk从revy到revN的变更即可:

svn merge -r revy:revN https://你的版本库URL/trunk .

情况2:Branch_B是从更早的trunk_revx分支出来的

如果Branch_B的基线是trunk_revx(和Branch_A同起点),那共同祖先是trunk_revx,需要合并trunk从revx到revN的完整变更:

svn merge -r revx:revN https://你的版本库URL/trunk .

合并后的收尾操作

  1. 命令执行后,SVN会自动合并变更,有冲突的文件会被标记出来,你需要手动修改冲突内容。
  2. 解决完冲突后,用svn resolved <冲突文件名>标记冲突已处理。
  3. 最后验证代码没问题,提交到Branch_B:
    svn commit -m "合并WC_A的变更到Branch_B"
    

要是不想先提交WC_A的变更?

如果只是临时迁移本地修改,也可以用补丁方式:

  • 在WC_A目录生成补丁:
    svn diff > my-changes.patch
    
  • 到WC_B目录应用补丁:
    patch -p0 < /path/to/my-changes.patch
    
    不过这种方式没有版本记录,还是更推荐先提交再做三方合并。

内容的提问来源于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:45:10