什么是SVN中的反向合并(Revert Merge),一个简单的解释和从开始到结束的一步一步的过程

时间:2013-10-22 19:32:32

标签: svn tortoisesvn tortoisemerge

什么是SVN中的反向合并(Revert Merge),一个简单的解释和从开始到结束的一步一步的过程将会很棒。

有人可以给我这些流程,如果可以,可以编号。一个好的和简单的例子也会很棒。

2 个答案:

答案 0 :(得分:23)

来自Tortoise User Guide

  

如果要将更改合并回工作副本,请还原   已经提交的更改,请选择修订   恢复并确保选中“反向合并”框。

从我的观点来看,反向合并是一个正常的" commit表示对一个或多个以前提交的" anti" -commit。之前的提交仍然存在,但更改将通过新的" anti" -commit恢复。

答案 1 :(得分:9)

简短回答

反向合并与合并正式相同,但当然是以相反的顺序。反向合并修订的更改将在您的工作副本中撤消。

实施例

例如,如果你想从HEAD回到转速。 123,假设你的工作副本处于HEAD状态,你会像这样反向合并:

svn merge -r HEAD:123

这会将您的工作副本设置为修订版123的状态,但它将正式基于HEAD。您的工作副本状态与您手动将文件编辑回版本123的情况相同。到目前为止,存储库中没有任何更改。

请注意,这与更新与修订版123不同。如果您这样做了,尽管您的工作副本文件在两种情况下都具有相同的内容,但您的工作副本状态会有所不同:SVN会知道你的工作副本是基于修订版123而不是HEAD。如果您随后尝试提交更改,它会告诉您应该首先更新到HEAD,这会撤消对版本123的更新,假设您在此期间没有更改任何内容。

回到我们原来的情景。如果您对反向合并感到满意,那么您可以将其签入存储库:

svn commit -m "We undid all changes since r123."

或者,如果您认为自己犯了错误,可以还原反向合并,这是完全不同的,因为它只会将您的工作副本设置为存储库状态基于(在我们的例子中,HEAD):

svn revert --recursive .

但要小心那个,它会不可逆转地恢复你的反向合并:-)。 点是指当前目录,必须明确指定(与大多数其他SVN命令不同)作为安全措施,以避免意外还原任何内容。