我找到了各种关于如何恢复SVN提交的示例,例如

svn merge -r [current_version]:[previous_version] [repository_url]

or

svn merge -c -[R] .

但这两种方法似乎都不管用。我尝试了这些命令,并检查了手动更改的文件。

如何恢复修订号为1944的提交?我如何检查恢复已经完成(没有在实际文件中查看已恢复的更改)?


当前回答

Alex,试试这个:svn merge [WorkingFolderPath] -r 1944:1943

其他回答

SVN merge -r 1944:1943。应该恢复工作副本中r1944的更改。然后,您可以检查工作副本中的更改(使用diff),但您需要提交才能将恢复应用到存储库中。

如果您使用的是TortoiseSVN客户端,则可以通过显示日志对话框轻松完成。

如果您希望完全从历史记录中删除提交,还可以在特定修订时转储回购,然后导入该转储。具体地说:

svnrdump dump -r 1:<rev> <url> > filename.dump

svndump命令与svnadmin dump功能相同,但工作在远程repo上。

接下来,只需将转储文件导入您所选择的回购。这种方法在《豆茎》上被测试效果很好。

svn merge -c -M PATH

这救了我的命。

我也有同样的问题,在恢复后,我也没有看到旧的代码。 运行上述命令后,我得到了一个干净的旧版本代码。

F=code.c
REV=123
svn diff -c $REV $F | patch -R -p0 \
    && svn commit -m "undid rev $REV" $F