Tortoise SVN合并了两个分支

时间:2014-01-13 18:25:09

标签: svn merge tortoisesvn branch

我正在尝试将两个分支与乌龟SVN合并。 自分歧以来,这两个分支都发生了变化。 如果我合并它们,只会获得其中一个的更改而另一个的更改将被覆盖。 但我希望每个文件的最新更改(我们没有在相同的文件中工作)。

我尝试了“合并两个不同的树”选项并在“From:”和“To:”中输入了两个分支。 我对两者进行了头版修订。 我将其他所有内容都保留为默认值(合并深度:工作副本,比较空格,其他未选中的内容)

3 个答案:

答案 0 :(得分:20)

From URL选项中,您应指定要合并的分支。

例如,假设有2个分支,分支A和分支B,并且您希望将分支B合并到分支A

  • 在TortoiseSVN中,单击Merge选项,然后选择Merge two different trees选项。
  • From URL中,请提及的网址 分支ATo URL,提及分支B的网址。

这应该将分支B合并到分支A而不会丢失任何文件。

答案 1 :(得分:8)

Subversion中的合并始终在本地完成。您要合并的分支应该使用干净的结帐进行检出。也就是说,它应该是最新的,没有本地更改。然后将其他分支合并到其中并提交更改。

合并不是特定分支的副本。合并通常是三方面的操作。你有一个你正在合并的分支(称为你的)你正在合并的分支(称为他们的),以及最后一个共同的祖先(LCA)。最后一个很重要。

如果在您的分支上发生了更改,则在合并过程中不会触及该更改。合并算法知道这一点,因为你的和LCA之间存在差异。如果LCA和他们的之间存在差异,则考虑进行更改。

如果我理解你有:

  • branch1取自行李箱。
  • branch2取自branch1

你想要合并什么?是否要将branch1branch2合并到主干中。如果您通过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是指您要在输出分支中合并其更改的分支

  1. 获取output branch的干净工作副本
  2. 打开TortoiseSVN合并向导(TortoiseSVN>合并),然后选择“合并一系列修订版本”选项
  3. 在“要合并的URL”字段中,输入input branch
  4. 如果要合并input branch的所有修订,请在“合并的修订范围”字段中,选择“所有修订”。如果仅要合并特定修订,请选择“特定范围”,然后使用“显示日志”按钮选择修订。在这方面,TortoiseSVN很聪明,任何已合并的修订版都将显示为灰色,并标有已合并图标
  5. 在下一个屏幕上选择“合并”选项。默认选项足够好
  6. 使用“合并”按钮执行合并。冲突(如果有)会弹出,要求您选择解决方案
  7. 解决所有冲突后,将更改提交到您的output branch

Figure 4.56. The Merge Wizard - Select Revision Range

有关更多详细信息,请参见TortoiseSVN Docs on Merging