我的代码库中的最新修订版本已损坏,导致我的应用程序不稳定。我想恢复到较早的修订版本。
但我不想简单地在工作副本上使用“恢复”;我实际上想删除我的仓库中的头版修订版和之前的几个修订版,从而将我的仓库“恢复”到早期的修订版,该修订版将成为头版修订版。有人知道我该怎么做吗?
答案1
也许这个链接可以帮助你:
http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/
引用:
更改到工作副本中的顶级目录(假设您想要回滚整个工作副本)。
运行
svn revert
以将工作副本的文件恢复到您上次提交/签出时的状态。运行
svn status -v
以查看您的工作副本现在对应的修订号(它是生成的列表中的最高修订号svn status -v
)。运行
svn merge -rXX:YY
其中XX
您在上一步中获得的号码以及YY
您要恢复到的修订版本号。完成!可能的例外是,工作副本中
YY
最初修订时不存在的文件仍会存在,因为默认情况下 svn 不会删除任何内容。如果您想删除它们,请svn del [filename]
对每个文件运行。做得好!现在,您可以像从未发生过这些中间编辑一样操作您的工作副本。当您准备好提交您的工作时,只需像往常一样使用 svn commit 即可!
答案2
这对我来说很有效。假设你有修订版本 1234 作为 HEAD,并且你想恢复最后三个提交:
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
答案3
对我来说(VisualSVN,30-HEAD)有效:
删除 C:\Repositories\MyRepo\revs\0\30 删除 C:\Repositories\MyRepo\revs\0\29 删除 C:\Repositories\MyRepo\revs\0\28 删除 C:\Repositories\MyRepo\revprops\0\30 删除 C:\Repositories\MyRepo\revprops\0\29 删除 C:\Repositories\MyRepo\revprops\0\28 echo 27 > C:\Repositories\MyRepo\db\current
答案4
我知道这是一个老问题,但是,我刚刚发现如何使用 Windows/TortoiseSVN 来做到这一点。
正如评论所建议的,您不能“删除”修订,但您可以做的是制作一个与您想要恢复的修订相同的更新的修订。
- 检出您想要从中恢复修订的目录的存储库的 HEAD。
- 在 TortoiseSVN 中加载您想要恢复的最高级别目录(例如“Trunk”)的“显示日志”视图。
- 右键单击要删除的修订版本注意:这是您要删除的修订版本,而不是您要恢复到的修订版本。
- 选择“恢复此修订版的更改”。
- 出现提示时单击“是”。
- 正常地更新结帐,但更新至“HEAD”。
- 重新提交。
然后,您将联系所有已检查过该版本的人,让他们进行更新,并确保删除所有新文件。
此外,您需要确保每个人都知道该修订是什么,并可能更新描述。