在合并时解决SVN中的树冲突

4
我有一个SVN合并树冲突,无法解决,希望你们能帮忙解决。这是情况:我从主干创建了分支A进行开发,然后从分支A创建了分支B,两个分支同时发展。在某个时刻,我将分支B中的一些修订版本挑选出来放入主干,以获取分支B中开发的一些功能。现在,我将分支A与主干同步:
~/branch_a$ svn merge ^/trunk
~/branch_a$ svn commit

这里没有问题。下一步是将B与A同步:

~/branch_b$ svn merge ^/trunk

这里出现了一些树冲突,在合并之前就已经存在于主干中的文件/目录在之前进行的樱桃拣选中被修改(不知道是否与此有关,只是提一下):

  C some_dir/other_dir/some_file.php
  >   local add, incoming add upon merge
  C some_other_dir/some_sub_dir
  >   local add, incoming add upon merge

基本上,我希望从合并中得到文件的版本,并且放弃当前版本。有什么最好的解决方法呢?
提前感谢!
2个回答

3
这里有一个网站,你可以找到如何进行合并的详细解释。 http://www.sepcot.com/blog/2007/04/SVN-Merge-Branch-Trunk 当你没有使用-r参数来进行合并时,你试图合并整个分支,包括那些不属于该分支的修订版本。其实它所做的是:它从创建仓库的修订版本开始到现在的修订版本,包括此分支不存在的修订版本,可能会引起大量的树合并冲突和常规冲突。
当你在svn中将一个分支合并到主干时,必须指定从分支选择的修订版本,从创建分支的点开始到主干的最新修订版本。

谢谢您的回复。我按照您指出的指南所说做了。我认为我做得很正确。现在我的问题是如何解决将主干合并回功能分支时遇到的冲突。 - Gonçalo Marrafa
哦,是的...解决冲突这部分是开发人员必须亲手完成的艰巨工作。非常乐意帮忙,如果您认为答案是正确的并解决了您的问题,请不要忘记将其标记为正确的答案 ;) - Victor

2

使用以下命令可以解决您的树冲突:

svn resolve --accept working -R <file name with path>

1
...并丢弃另一个分支的更改。 - ceklock
4
警告:不要仅仅这样做。通过这种方式,你只是告诉 SVN “嘿,我解决了它”,但是如果你实际上没有采取必要的步骤来解决它,那么它显然会出错。 - MarioDS
1
这是我多年来一直在寻找的命令,非常感谢。如果您只想将一个分支的状态带入另一个分支(或主干),那么这就是解决方案。至少与 https://dev59.com/MnRA5IYBdhLWcg3w9izq#2648969 上的其他提示结合使用。 - user2081279

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接