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
。
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
。
你想合并什么?是否要将branch1
和branch2
合并到主干中。如果您通过 Subversion 复制 trunk
到 branch1
并通过 Subversion 复制 branch1
到 branch2
,这应该是可能的。这样,Subversion 就知道这两个分支在它们的历史中是相关的。
如果您创建了分支,使用 Windows 复制文件并添加了文件,则两个分支之间没有历史记录,合并更加困难。
将branch2
的变化合并到branch1
中可以吗?如果是这样,我会这样做:
branch2
将branch1
合并到branch2
并提交这些更改。 branch2
将拥有 branch1
中的所有更改。
结帐trunk
将branch2
合并到trunk
。现在,Trunk 将拥有 branch1
和 branch2
中的所有更改。
【讨论】:
【参考方案3】:“合并两个不同的树”选项在您尝试使一个分支看起来与另一个分支完全一样时很有用。
如果您希望输出分支包含来自两个分支的更改,则应使用“合并一系列修订”选项。
使用合并一系列修订选项的步骤:
注意:output branch
指的是您要将更改合并到的分支。
而input branch
指的是你想在输出分支中合并其更改的分支
-
获取
output branch
的干净工作副本
打开 TortoiseSVN 合并向导(TortoiseSVN > Merge),然后选择“合并一系列修订”选项
在要合并的 URL 字段中,输入 input branch
如果要合并input branch
的所有修订,请在要合并的修订范围字段中选择“所有修订”。如果您只想合并特定修订,请选择“特定范围”并使用“显示日志”按钮选择修订。 TortoiseSVN 在这方面很聪明,任何已经合并的版本都会变灰并标有已经合并图标
在下一个屏幕上选择合并选项。默认选项就足够了
使用“合并”按钮执行合并。将弹出冲突(如果有),要求您选择解决方案
解决所有冲突后,将更改提交到您的output branch
更多详情请参考TortoiseSVN Docs on Merging
【讨论】:
以上是关于Tortoise SVN 合并两个分支的主要内容,如果未能解决你的问题,请参考以下文章