我们遇到的情况是有人搞砸了我们SVN服务器的提交.许多文件被删除等.
问题:将先前(向坏的提交)修订版制作HEAD修订版的技术是什么?我已经在这里看到了关于为1个文件执行此操作的讨论,但我们想让它像最后一次提交从未发生过.有任何想法吗?
所有这些答案似乎都是正确的.我将abatishchev的答案标记为正确的答案仅仅是因为我使用的是Tortoise SVN,这是我实际使用的方法.
最干净的方法是撤消变更
您可以使用svn merge来"撤消"工作副本中的更改,然后将本地修改提交到存储库.您需要做的就是指定反向差异.(您可以通过指定
--revision 303:302
或等效来执行此操作--change -303
.)
我意识到它并没有"让它像最后一次提交从未发生过",因为提交仍然是历史的一部分,但我相信在历史中保持这种糟糕的提交会更好.
它可能包括一些可以查询/比较的正在进行的工作,以便轻松地重新制作新的正确提交.
即使:
SVN(1.5)手册提到了将来obliterate
完成永久删除信息任务的命令,以及
提到svndumpfilter
可能的解决方法(因为它提供了通过充当基于路径的过滤器快速轻松地修改转储文件数据的能力)
...最好不要尝试将SCM工具扭曲成一开始就不应该做的事情.
历史化(以及与分支的并行化)是SCM的两个主要特征.
也许你可以显示日志,检查以前的版本(n-1),在上下文菜单中选择Revert to this revision并提交更改(它将变为n + 1,其中n是当前坏头)