我正在尝试将两个分支与乌龟SVN合并。自分歧以来,这两个分支都发生了变化。如果我合并它们,只会获得其中一个的更改而另一个的更改将被覆盖。但我希望每个文件的最新更改(我们没有在相同的文件中工作)。
我尝试了“Merge two different trees”选项并在“From:”和“To:”中输入了两个分支。我对两者进行了头版修订。我将其他所有内容都保留为默认值(合并深度:工作副本,比较空格,其他一切未选中)
在From URL
选项中,您应指定要合并的分支。
例如,假设有2个分支,分支A
和分支B
,并且您想要将分支B
合并到分支A
。
Merge
选项,然后选择Merge two
different trees
选项。From URL
,请提及分支A
的URL和To URL
,提及分支B
的URL。这应该将分支B
合并到分支A
而不会丢失任何文件。
参考:发现此声明here
Subversion中的合并总是在本地完成。您要合并的分支应该使用干净的结帐进行检出。也就是说,它应该是最新的,没有本地更改。然后,将其他分支合并到其中并提交更改。
合并不是特定分支的副本。合并通常是三方面的操作。你有一个你正在合并的分支(称为你的)你正在合并的分支(称为他们的分支)和最后一个共同的祖先(LCA)。最后一个很重要。
如果您的分支机构发生了更改,则在合并过程中不会触及该更改。合并算法知道这一点,因为你和LCA之间存在差异。如果LCA与他们之间存在差异,则考虑进行更改。
如果我理解你有:
branch1
是从树干中取出的。branch2
取自branch1
。你想要合并什么?你想把branch1
和branch2
合并到主干。如果你通过Subversion将trunk
复制到branch1
并通过Subversion将branch1
复制到branch2
,这应该是可能的。这样,Subversion知道这两个分支在它们的历史中是相关的。
如果您创建了分支,使用Windows复制文件并添加了文件,则两个分支之间没有历史记录,并且合并更加困难。
是否可以将branch2
的变化合并到branch1
?如果是这样,我会做这样的事情:
branch2
branch1
合并到branch2
并实施这些更改。 branch2
将拥有branch1
的所有变化。trunk
branch2
合并到trunk
。 Trunk现在将在branch1
和branch2
中进行所有更改。