【问题标题】:Tortoise SVN merge two branchesTortoise SVN 合并两个分支
【发布时间】:2014-02-01 15:07:22
【问题描述】:

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

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

【问题讨论】:

  • 两个分支是否有共同的祖先分支/主干?
  • 是的。第一个是主干,另一个是它的分支。
  • 从(任何)分支合并到主干(分支重新集成)不是“合并两棵不同的树”,并且从不必须是它。尝试至少阅读一次svn help merge 和 TortoiseSVN 帮助以进行合并!!!
  • 请查看链接stackoverflow.com/questions/18308584/…中投票最高的答案。我认为您的回答应该足够了。

标签: svn merge tortoisesvn branch


【解决方案1】:

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

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

  • 在 TortoiseSVN 中,点击Merge 选项,然后选择Merge two different trees 选项。
  • From URL,请注明网址 分支A 并在To URL 中提及分支B 的URL。

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

参考:找到这条语句here

【讨论】:

  • 好吧,这似乎反过来了。
  • 我也觉得是这样,但是发现了这个声明 here "In the From: field enter the full folder URL of the trunk。这可能听起来不对,但请记住主干是您要添加分支更改的起点。”
【解决方案2】:

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

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

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

如果我理解你有:

  • branch1 取自后备箱。
  • branch2 取自 branch1

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

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

branch2的变化合并到branch1中可以吗?如果是这样,我会这样做:

  • 结帐branch2
  • branch1 合并到branch2 并提交这些更改。 branch2 将拥有 branch1 中的所有更改。
  • 结帐trunk
  • branch2 合并到trunk。现在,Trunk 将拥有 branch1branch2 中的所有更改。

【讨论】:

    【解决方案3】:

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

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

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

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

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

    更多详情请参考TortoiseSVN Docs on Merging

    【讨论】:

      猜你喜欢
      • 2013-08-20
      • 2016-08-10
      • 2010-11-25
      • 2013-04-11
      • 2020-06-22
      • 2010-11-25
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多