如何将HEAD更改为先前的版本

时间:2008-12-04 06:39:25

标签: svn tortoisesvn

我们遇到的情况是有人搞砸了我们SVN服务器的提交。许多文件被删除等。

问题:使先前(向错误提交)修订版HEAD修订版的技术是什么?我已经在这里看到了关于为1个文件执行此操作的讨论,但我们想让它像最后一次提交从未发生过。有什么想法吗?

所有这些答案似乎都是正确的。我将abatishchev的答案标记为正确的答案仅仅因为我使用的是Tortoise SVN而且它是我实际使用的方法。

5 个答案:

答案 0 :(得分:19)

最简洁的方法是undo changes

  

您可以使用svn merge来“撤消”工作副本中的更改,然后将本地修改提交到存储库。您需要做的就是指定反向差异。 (您可以通过指定--revision 303:302或等效的--change -303来执行此操作。)

我意识到它并没有“让它像最后一次提交从未发生过”,因为提交仍然是历史的一部分,但我相信在历史中保留这个糟糕的提交会更好。
它可能包括一些可以查询/比较的正在进行的工作,以便轻松地重新制作新的正确提交。


即使:

  • SVN(1.5)手册提及将完成永久删除信息任务的未来obliterate命令,
  • 提及svndumpfilter作为一种可能的解决方法(因为它提供了通过充当基于路径的过滤器快速轻松地修改转储文件数据的能力)

...最好不要尝试将SCM工具扭曲成一开始就不应该做的事情。
历史化(以及与分支的并行化)是SCM的两个主要特征。

答案 1 :(得分:9)

也许你可以显示日志,检查以前的版本(n-1),在上下文菜单中选择Revert to this revision并提交更改(它将变为n + 1,其中n是当前坏头)

答案 2 :(得分:1)

您可以使用svnadmin dumpsvnadmin load执行此操作。这是一种非常蛮力的方式,但我相信这是唯一的方法。

此问题的答案可能有所帮助:Nuking huge file in svn repository

答案 3 :(得分:0)

你可以svn cp特定的修订,所以如果没有你想要保存的干预操作,你可以查看违规目录,然后svn cp旧版本。请参阅Peg and Operative Revision section of the book

答案 4 :(得分:0)

使用TortoiseSVN,如果您想在违规提交之前的版本中看到存储库:

  • 使用TortoiseSVN资源库浏览器打开URL。
  • 请注意该提交的修订号,并通过单击右上角的按钮将HEAD更改为该数字 -

enter image description here