我找到了各种关于如何恢复SVN提交的示例,例如
svn merge -r [current_version]:[previous_version] [repository_url]
or
svn merge -c -[R] .
但这两种方法似乎都不管用。我尝试了这些命令,并检查了手动更改的文件。
如何恢复修订号为1944的提交?我如何检查恢复已经完成(没有在实际文件中查看已恢复的更改)?
我找到了各种关于如何恢复SVN提交的示例,例如
svn merge -r [current_version]:[previous_version] [repository_url]
or
svn merge -c -[R] .
但这两种方法似乎都不管用。我尝试了这些命令,并检查了手动更改的文件。
如何恢复修订号为1944的提交?我如何检查恢复已经完成(没有在实际文件中查看已恢复的更改)?
当前回答
虽然给出的建议可能对某些人有用,但对我的情况不适用。当执行合并时,rev 1443的用户更新到rev 1445时,仍然同步所有在1444中更改的文件,即使它们从合并中等于1443。我需要最终用户根本看不到更新。
如果你想完全隐藏提交,可以在正确的版本创建一个新的分支,然后交换分支。唯一需要做的是删除并重新添加所有锁。
copy -r 1443 file:///<your_branch> file:///<your_branch_at_correct_rev>
svn move file:///<your_branch> file:///<backup_branch>
svn move file:///<your_branch_at_correct_rev> file:///<your_branch>
这对我有用,也许对其他人也有帮助=)
其他回答
我尝试了上面,(svn merge)你是对的,它做杰克。然而
svn update -r <revision> <target> [-R]
似乎可以工作,但不是永久性的(我的SVN只是显示旧版本)。所以我不得不
mv <target> <target backup>
svn update <target>
mv <target backup> <target>
svn commit -m "Reverted commit on <target>" <target>
在我的特定情况下,我的目标是interfaces/AngelInterface.php。我对文件进行了更改,提交了它们,更新了构建计算机运行phpdoc编译器,发现我的更改是浪费时间。svn log interfaces/AngelInterface.php显示我的更改为r22060,之前对该文件的提交是r22059。所以我可以svn更新-r22059 interfaces/AngelInterface.php,我最终得到的代码是-r22059。然后:-
mv interfaces/AngelInterface.php interfaces/AngelInterface.php~
svn update interfaces/AngelInterface.php
mv interfaces/AngelInterface.php~ interfaces/AngelInterface.php
svn commit -m "reverted -r22060" interfaces/AngelInterface.php
或者,我也可以在目录上做同样的事情,通过指定。-R来代替上述所有的interfaces/AngelInterface.php。
如果您希望完全从历史记录中删除提交,还可以在特定修订时转储回购,然后导入该转储。具体地说:
svnrdump dump -r 1:<rev> <url> > filename.dump
svndump命令与svnadmin dump功能相同,但工作在远程repo上。
接下来,只需将转储文件导入您所选择的回购。这种方法在《豆茎》上被测试效果很好。
如果您使用的是TortoiseSVN客户端,则可以通过显示日志对话框轻松完成。
Alex,试试这个:svn merge [WorkingFolderPath] -r 1944:1943
svn merge -c -M PATH
这救了我的命。
我也有同样的问题,在恢复后,我也没有看到旧的代码。 运行上述命令后,我得到了一个干净的旧版本代码。