我的代码存储库中的最新修订已损坏,并破坏了我的应用程序的稳定性。我想恢复到较早的版本。
但是我不想在我的工作副本上简单地使用“还原”。实际上,我实际上想删除我的仓库中的主要修订版本和多个修订版本,从而将我的仓库“还原”到一个较早的修订版本,该版本将成为主要修订版本。有人知道我会怎么做吗?
我的代码存储库中的最新修订已损坏,并破坏了我的应用程序的稳定性。我想恢复到较早的版本。
但是我不想在我的工作副本上简单地使用“还原”。实际上,我实际上想删除我的仓库中的主要修订版本和多个修订版本,从而将我的仓库“还原”到一个较早的修订版本,该版本将成为主要修订版本。有人知道我会怎么做吗?
Answers:
也许此链接可以帮助您:
http://www.sampablokuper.com/2009/03/27/svn-revert-to-revision/
引用:
转到工作副本中的顶层目录(假设您要回滚整个工作副本)。
运行
svn revert
以将工作副本的文件恢复为上次提交/签出时的状态。运行
svn status -v
以查看您的工作副本现在对应的修订号(这是svn status -v
产生的列表中的最高修订号)。运行
svn merge -rXX:YY
whereXX
是您在上一步中获得YY
的编号,并且是您要还原到的修订版的编号。做完了!可能的例外是,工作副本中
YY
最初进行修订时不存在的文件仍会存在,因为默认情况下svn不会删除内容。如果要摆脱它们,请svn del [filename]
对它们中的每个运行一个。做得好!现在,就像所有这些中间编辑从未发生过一样,使用您的工作副本。当您准备好做出自己的努力时,只需照常使用svn commit即可!
svn merge -rXX:YY .
请记住在行的末尾放置一个点以引用当前目录。在TortoiseSVN中,有一个反向合并的选项。
这对我有用。假设您将1234修改为HEAD,并且您想还原最后三个提交:
svnadmin create newrepo
svnadmin dump -r 0:1231 repo | svnadmin load newrepo
mv repo oldrepo
mv newrepo repo
我知道这是一个古老的问题,但是,我刚刚找到了如何使用Windows / TortoiseSVN执行此操作。
如评论所建议,您不能“删除”一个修订,但是您可以做的是制作一个与您要还原到的修订相同的最新修订。
然后,您将转到已签出的其他所有人,并让他们进行更新,并确保删除所有新文件。
另外,您需要确保每个人都知道该修订是什么,并有可能更新描述。
对我来说(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 回声27> C:\ Repositories \ MyRepo \ db \ current
转到终端并导航到svn代表:现在键入
svn update -r“您要还原的修订号”