Tortoise SVN 合并两个分支

Posted

技术标签:

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

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

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

【问题讨论】:

两个分支是否有共同的祖先分支/主干? 是的。第一个是主干,另一个是它的分支。 从(任何)分支合并到主干(分支重新集成)不是“合并两棵不同的树”,并且从不必须是它。尝试至少阅读一次svn help merge 和 TortoiseSVN 帮助以进行合并!!! 请查看链接***.com/questions/18308584/…中投票最高的答案。我认为您的回答应该足够了。 Merge two branches using tortoise SVN的可能重复 【参考方案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中可以吗?如果是这样,我会这样做:

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

【讨论】:

【参考方案3】:

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

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

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

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

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

更多详情请参考TortoiseSVN Docs on Merging

【讨论】:

以上是关于Tortoise SVN 合并两个分支的主要内容,如果未能解决你的问题,请参考以下文章

Tortoise SVN Merge 特定版本

将分支中的更改合并到主干中

TortoiseSVN 客户端

Tortoise SVN 提交查询

eclipse svn合并小结

Tortoise 1.9:Merge 不记录 mergeinfo