我有一个主干(A)和两个分支(B 和 C)。当我将A与C合并时,就可以了,在我将A与B合并后,之前的C将被覆盖,并且我的主干没有C更改。

我想要的是 A + B + C 合并后进入主干。

编辑以获取更多解释:

  1. 在主干中我有3个文件:“文件1”、“文件2”和“文件3”;
  2. 我从主干创建一个分支作为“Branch 1”;
  3. 我切换到“Branch 1”,将错误修复到“FILE 1”文件中并提交;
  4. 同时,另一个人从主干创建一个分支作为“分支2”;
  5. 此人将另一个错误修复到“FILE 2”和“FILE 3”文件中并提交;
  6. “Branch 2”被批准发布,然后我将“Branch 2”合并到“trunk”(可以);
  7. 第二天,“分支 1”获得批准,然后我将“分支 1”合并到“主干”,“主干”丢失“分支 2”的更改。
有帮助吗?

解决方案

  1. 制作一份工作副本 trunk
  2. svn merge -r W:X svn://branchA workingCopy
  3. svn merge -r Y:Z svn://branchB workingCopy

我认为这将为您提供您想要的,即主干加上任一分支所做的任何更改。然而,你将不得不处理冲突。

其他提示

假设您使用的是 Subversion 1.5 或更高版本,我认为您想要将分支“重新集成”回主干,请参阅 http://blog.red-bean.com/sussman/?p=92

你的术语不清楚。当你说“将 A 与 B 合并”时,这是否意味着将 A 合并到 B 或将 B 合并到 A 中?你能准确解释一下你做了什么来创建分支,以及你如何尝试进行合并吗?此外,对于合并,您使用的 SVN 版本也很重要。

我建议你仔细阅读 关于分支和合并的章节 在SVN书中。

基本上,当你有一个功能分支(这就是你看起来拥有的)时,你会重复地将分支合并到其中。然后 SVN 会记录您合并的修订版本,并且不会再次合并它们。当您完成分支后,将其重新集成到主干中并关闭它。

所有这些都在您的磁盘上完成,一次一个分支,解决每个分支后的潜在冲突,并检查每个步骤。(如果由于某种原因您需要在一次签入中将更改应用到主干,您可以将分支合并到主干上的一个新分支,然后在完成后将该分支合并到主干中。)

您希望将合并应用到工作区,而不是存储库。或者,您可以使用 cvs,它以比 svn 更好的方式处理分支。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top