SVN反向合并?

我的SVN版本库在修订版497上是完美的。我执行了几个不好的提交,所以现在在修订HEAD。 我看到回滚你应该使用这样的命令:

svn merge -r HEAD:497 . 

而在工作目录(而工作目录是在HEAD版本)。 但是,这是正确的命令? 或者我使用HEAD:498? 还是496? 我已经运行了这个命令,而且当前的修订看起来与497不一样,因为当我更新-r 497(或者当我有一个497的工作副本并且我更新了-r HEAD)时,会发生很多文件更新。

我是否有某种围栏问题,在那里:497实际上回复到496,或者什么? 或者,当我更新时,SVN回溯通过每个修订,尽pipe头和497是相同的?

编辑:

只是为了澄清,正如我刚才所说的,当我在497和我合并的HEAD之间进行更新时,我发现很多文件发生了变化。 我认为,如果497和HEAD是相同的,它会检测到,并且不会发生文件更改; 它只会说“更新至修订版497”。 所以我的命令是错的,还是这个想法错了? (如果是这样,为什么?)

如果你的回购在497修订版中处于原始状态,那么我认为你是正确的,你需要做一个:

 svn merge -r HEAD:497 . 

该合并命令只会改变工作副本中的文件,所以请记住也要提交更改以更新仓库中的HEAD。

在合并之后,在提交之后,尝试比较版本497和HEAD,它们应该是相同的。

如果你想撤销r123,你需要svn merge -r 123:122 .

这意味着你需要运行

 svn merge -r HEAD:497 . 

要validation运行:

 svn diff -r 497 

对于任何使用TortiseSVN的人来说,只需调出“显示日志”对话框即可恢复提交:

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-howto-rollback.html

要退出一个不希望的变化(也许你提交了其他文件,其中有debugging语句,以及你真的想提交的东西),说坏的变化是-r10:

 svn update svn merge -r10:9 <URL of your repository base> . 

现在你可以恢复你想要提交的文件:

 svn update svn update -r10 svn commit <just that one file> # this is the command you meant to type from the beginning 

如果你想要一个快速可靠的方式来回滚到特定的版本,那么只需检查版本库的旧版本即可。

运行svn info来提醒自己你的仓库URL是什么,然后创build一个新的文件夹并签出你想要的修订:

 cd <your new folder> svn checkout <URL> -r 497 . 

然后,您可以将该文件夹与现有文件夹进行比较,如果需要,可以将整个修订版从此处提交回存储库。