合并后还原,坏主意?

时间:2010-04-30 06:34:06

标签: svn

我是颠覆的新手。最近,我在两个不同的分支中做了一些开发,其中一个分支是另一个分支的分支。我已经将第一个分支的一些变化合并到了主干。但是,当尝试将更改从其他分支合并到主干时,一切都变得混乱。也就是说,我遇到了很多冲突,其中一些是我解决的(但没有提交),而其中一些则没有。更糟糕的是,我对分支所做的很多改变都是出于某种原因没有合并到主干中。现在,我唯一的问题是,我是否可以对我的工作副本进行恢复以使主干恢复到之前的状态?也就是说,这样做会让我搞砸一下吗?我的教导是重新开始,“手工”更仔细地做。

感谢名单!

4 个答案:

答案 0 :(得分:5)

只要您始终只合并到一个干净且新近更新的工作副本中,您总是可以通过恢复合并所做的所有更改(以及您为解决冲突所做的更改)来退出合并。 /> 确保永远不要尝试合并到具有未提交更改的工作副本。

为了最大限度地减少合并冲突,您需要

  • 一次进行一次合并(如果由于某种原因你想在其中提交几个合并,你可以创建一个合并目标的临时副本,将几个分支合并到那个,合并回合并目标,并删除之后。)
  • 首先合并从主干到分支的变化,解决所有引起的冲突
  • 始终使用svn merge --reintegrate 从分支机构(或其他分支,如果它们是通过复制创建)合并回更改>
  • 扔掉你重新融入的分支并重新创建它们

答案 1 :(得分:2)

如果您的工作副本搞砸了,最简单的方法通常是完全删除它,再从头开始检查,然后再试一次。恢复在理论上也是如此,但是添加的文件将被遗留(这可能会导致以后的合并出现问题)。此外,显而易见的是删除和签出的内容。

只要你没有做任何提交,存储库中的trunk就不会受到影响:merge只修改客户端的文件。

正如sbi所说,你应该总是合并到一个未经修改的工作副本,否则svn往往会混淆。

答案 2 :(得分:1)

如果您尚未提交并进行恢复,则您将拥有后备箱中的最新版本。

我不认为在第一次合并之后和第二次合并之前可以将工作副本返回到州。

答案 3 :(得分:0)

恢复工作副本会将本地文件重置回存储库中的内容。换句话说,它摆脱了你所做的任何局部变化。它不会更改主干(因为主干位于存储库中)。 Revert与删除工作副本和重新检查完全相同。

如果你将你的分支合并到trunk的工作副本中,没有提交它,然后尝试将你的另一个分支合并到同一个工作副本中,那很简单:只需恢复你的工作副本。你将失去一切没有承诺的东西。

如果您将分支合并到trunk,已提交,现在要撤消它,您可以从该提交恢复更改(它仍称为“恢复”,但这是一个不同的操作)。例如,如果你正在使用TortoiseSVN:

  1. 从干净的工作副本开始(无本地更改)
  2. 使用Tortoise查看工作副本中的日志
  3. 右键单击要撤消的修订(您提交合并的修订版本),然后选择“从此修订版还原更改”。
  4. 承诺,并且您已经有效地撤消了合并。
  5. 要避免此问题,您可能应该将更改从第二个分支合并回第一个分支,并将更改从第一个分支合并回到主干。如果那不是他们想要工作的方式,你可能应该从trunk而不是第一个分支创建第二个分支。最简单的方法是合并回你分支的地方。