使用TortoiseSVN删除修订版本

23
我使用TortoiseSVN提交了一些有问题的代码更改到我的SVN服务器上。
现在头版本是155,但我想删除最后的两个版本,以便头版本为153。换句话说,我想“撤消”我的最后两次提交。
我如何使用TortoiseSVN做到这一点? TortoiseSVN菜单中是否存在选项,还是需要使用命令行?

我想说“交互式变基”,但我不确定是否正确... - Kerrek SB
@KerrekSB:这完全正确...对于git来说是的 :-)。 - sleske
5个回答

15

如果您打开SVN日志,您可以右键单击某个版本并使用选项恢复到此版本撤销此版本的更改。这两个选项都将更新您的工作副本(然后您可以提交)。

TortoiseSVN中没有删除版本的选项。


如果你真的需要删除(除非有严重损坏,我不建议这样做),可以在这里找到一些信息:http://superuser.com/questions/95432/want-to-delete-revisions-from-my-svn-repository。 - Luke Z
我在SVN日志中没有看到还原选项。有什么想法为什么会这样? - Techie
我在SVN日志中没有看到还原选项。有什么想法为什么会这样? - undefined

3
作为您更新的本地副本的根目录,您应该使用以下命令:
svn merge -rHEAD:153 .

这将“撤消”您在版本153中所做的所有更改,使您的版本156看起来像版本153。

别忘了之后要提交!

您也可以从TortoiseSvn中进行相同操作:打开“显示日志”界面,选择版本153,右键单击它并选择“还原此版本的更改”。


也许您需要在恢复此版本之前解决冲突,然后再提交。删除删除文件的修订记录是一个好方法。谢谢! - Espanta

2
很遗憾,使用TortoiseSVN(或者其他任何SVN客户端)是没有办法真正删除一个版本的,也就是说它不会从历史记录中完全消失。改变SVN存储库的历史记录是很困难的,需要对服务器进行操作 - 参见这个问题:为什么"彻底删除"(obliterate)不是Subversion的基本功能? 但是,您可以通过创建一个新的提交来"撤消"之前的提交,并将其恢复到原始状态。这通常使用一种称为"反向合并"的技术完成。例如,请参见撤销意外的提交

2

我使用了从Tortoise网站获取的这些指令。

但是重要的是在此之后立即点击提交(COMMIT)按钮。在意识到这一点之前,我变得非常疯狂。

如果您需要将旧版本还原为当前版本,请执行以下操作:

  1. 选择需要恢复更改的文件或文件夹。如果要还原所有更改,则应选择顶级文件夹。

  2. 选择TortoiseSVN → Show Log以显示修订版本列表。您可能需要使用Show All或Next 100来显示您感兴趣的修订版本。

  3. 右键单击所选修订版本,然后选择上下文菜单 → 还原到此修订版本。这将放弃所选修订版本之后的所有更改。

  4. 进行提交(commit)操作。


1
那只是什么也没做。它不会删除旧的提交,而只是添加另一个提交。修复更改?当然可以。但根本不会删除! - user2501323

0

从命令行:

撤销对文件的更改:

svn merge -r <newBadRev>:<oldRevToMergeBackTo> <filename>

例如:

svn merge -r 155:153 myfile.cpp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接