我正在尝试将两个分支与乌龟SVN合并。 自分歧以来,这两个分支都发生了变化。 如果我合并它们,只会获得其中一个的更改而另一个的更改将被覆盖。 但我希望每个文件的最新更改(我们没有在相同的文件中工作)。
我尝试了“合并两个不同的树”选项并在“From:”和“To:”中输入了两个分支。 我对两者进行了头版修订。 我将其他所有内容都保留为默认值(合并深度:工作副本,比较空格,其他未选中的内容)
答案 0 :(得分:20)
在From URL
选项中,您应指定要合并的分支。
例如,假设有2个分支,分支A
和分支B
,并且您希望将分支B
合并到分支A
。
Merge
选项,然后选择Merge two
different trees
选项。 From URL
中,请提及的网址
分支A
和To URL
,提及分支B
的网址。这应该将分支B
合并到分支A
而不会丢失任何文件。
答案 1 :(得分:8)
Subversion中的合并始终在本地完成。您要合并的分支应该使用干净的结帐进行检出。也就是说,它应该是最新的,没有本地更改。然后将其他分支合并到其中并提交更改。
合并不是特定分支的副本。合并通常是三方面的操作。你有一个你正在合并的分支(称为你的)你正在合并的分支(称为他们的),以及最后一个共同的祖先(LCA)。最后一个很重要。
如果在您的分支上发生了更改,则在合并过程中不会触及该更改。合并算法知道这一点,因为你的和LCA之间存在差异。如果LCA和他们的之间存在差异,则考虑进行更改。
如果我理解你有:
branch1
取自行李箱。branch2
取自branch1
。你想要合并什么?是否要将branch1
和branch2
合并到主干中。如果您通过Subversion trunk
将{/ em> branch1
复制到branch1
并通过Subversion将复制 branch2
复制到branch2
,这应该是可行的。这样,Subversion知道这两个分支在历史上是相关的。
如果您创建了分支,使用Windows复制文件并添加了文件,则两个分支之间没有历史记录,并且合并更加困难。
将branch1
的更改合并到branch2
是否可以?如果是这样,我会做这样的事情:
branch1
branch2
合并到branch2
并提交这些更改。 branch1
将在trunk
。branch2
trunk
合并到branch1
。 Trunk现在将在branch2
和{{1}}中进行所有更改。答案 2 :(得分:0)
“ 合并两棵不同的树”选项在尝试使一个分支看起来完全像另一个分支时很有用。
相反,如果您希望输出分支包含两个分支中的更改,则应使用“ 合并一系列修订版本”选项。
使用“合并一系列修订”选项的步骤:
注意:output branch
指您要将更改合并到的分支。
input branch
是指您要在输出分支中合并其更改的分支
output branch
的干净工作副本input branch
input branch
的所有修订,请在“合并的修订范围”字段中,选择“所有修订”。如果仅要合并特定修订,请选择“特定范围”,然后使用“显示日志”按钮选择修订。在这方面,TortoiseSVN很聪明,任何已合并的修订版都将显示为灰色,并标有已合并图标output branch
有关更多详细信息,请参见TortoiseSVN Docs on Merging