繁体   English   中英

Tortoise SVN 合并两个分支

[英]Tortoise SVN merge two branches

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

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

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

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

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

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

参考:在此处找到此声明

在 Subversion 中的合并总是在本地完成。 您要合并到的分支应该使用干净的检出方式检出。 也就是说,它应该是最新的,没有本地更改。 然后将另一个分支合并到其中并提交更改。

合并不是特定分支的副本。 合并通常是一种三向操作。 您有要合并到的分支(称为yours )、要合并的分支(称为theirs )和最后一个共同祖先(LCA)。 最后一点很重要。

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

如果我明白你有:

  • branch1取自主干。
  • branch2取自branch1

你想合并什么? 是否要将branch1branch2合并到主干中。 如果您通过 Subversiontrunk复制branch1通过 Subversionbranch1复制branch2这应该是可能的。 这样,Subversion 就知道这两个分支在它们的历史上是相关的。

如果您创建了分支,使用 Windows 复制文件并添加了文件,则两个分支之间没有历史记录,合并会更加困难。

可以将branch2的更改合并到branch1吗? 如果是这样,我会做这样的事情:

  • 结帐branch2
  • 合并branch1branch2并提交这些更改。 branch2将在所有的变化branch1
  • 结账trunk
  • branch2合并到trunk Trunk 现在将在branch1branch2进行所有更改。

当您尝试使一个分支看起来与另一个分支完全相同时,“合并两个不同的树”选项很有用。

相反,如果您希望输出分支包含来自两个分支的更改,则应使用“合并修订范围”选项。

使用合并一系列修订选项的步骤:

注意: output branch是指您要将更改合并到的分支。 input branch指的是你想在输出分支中合并其更改的分支

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

图 4.56。合并向导 - 选择修订范围

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM