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

Nah*_*kht 19 svn tortoisesvn tortoisemerge

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

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

Mic*_*cha 23

来自Tortoise 用户指南:

如果要将更改合并回工作副本,要还原已提交的更改,请选择要还原的修订,并确保选中"反向合并"框.

从我的观点来看,反向合并是一种"正常"提交,它代表对一个或多个以前的提交的"反" - 提交.前一次提交仍然存在,但这些变化将通过新的"反"委员会来恢复.

  • 如果你做一个提交,它将变量形式"Foo"的值改为"Bar"而不是反向提交会将"Foo"改回. (4认同)

Ing*_*upp 9

简短的回答

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

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

svn merge -r HEAD:123
Run Code Online (Sandbox Code Playgroud)

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

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

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

svn commit -m "We undid all changes since r123."
Run Code Online (Sandbox Code Playgroud)

或者,如果你觉得你已经犯了一个错误,你可以恢复反向合并,这是完全不同的东西,因为它仅设置你的工作拷贝回库状态是基于(在本例中,HEAD):

svn revert --recursive .
Run Code Online (Sandbox Code Playgroud)

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