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

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

or

svn merge -c -[R] .

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

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


当前回答

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

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

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

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

其他回答

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

我尝试了上面,(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。

“取消提交”修订是不可能的,但是您可以将工作副本恢复到1943版本,并将其提交为1945版本。1943年和1945年的版本将是相同的,有效地恢复了变化。

非常老的线程,但是Intellij没有答案。还原一次提交:

至: 颠覆>集成目录…

两个例子都必须成立,但是

svn merge -r UPREV:LOWREV。撤销范围

svn merge -c -REV。撤消单个修订,在您的情况下REV将是1944,即您希望撤消的修订。

在这个语法中,如果当前目录是WC并且(在每次合并后必须完成)你将提交结果

您想查看日志吗?