【问题标题】:Deleting recent commits in SVN在 SVN 中删除最近的提交
【发布时间】:2011-01-12 12:34:33
【问题描述】:

好的,所以我还在习惯这个 SVN 业务。我基本上在新年前后在我的存储库中转储了。我认为重组我网站的代码库以准备实施一些 OOP 更改是一个好主意。唯一的问题是,在我的愚蠢中,我直接在“我的电脑”中而不是通过我的 IDE 执行此操作。下一次提交是 FUBAR……所以我一次又一次地提交……嗯,是的,基本上只是在我的存储库中进行了转储。

所以,在将我的存储库打到了 NetBeans 完全无法解析的类似纸浆的状态后,我转向 TortoiseSVN 深入研究并检查了我最后一次理智的提交。这大约是链中较早的 5 次提交。

我目前正在下载它。而且我想知道我如何才能取消在此之后的所有提交,并假装整个系列的白痴从未发生过。

感谢您提供的任何帮助。如果重要的话,我会在 SlikSVN 托管。 (我怀疑它没有......)

【问题讨论】:

  • 在 Tortoise SVN 中,您选择一组您不喜欢的提交并说“从该版本恢复更改”——它会对您的工作副本执行反向更改,然后您提交这些反向更改。我敢肯定,一旦您找到要使用的确切按钮/命令,您使用的工具也可以做到这一点。
  • 我认为提问者的意思是真正让修订从历史中消失。
  • @sharptooth - 现在运行它,我们将看看它是如何进行的。唉,SO根据受欢迎程度重新排序标签。原来我有dump into svn ... sigh

标签: svn tortoisesvn


【解决方案1】:

如果你真的想从服务器中删除历史直到给定的修订,我会创建一个新的新存储库和svnsync 直到它的修订是好的。然后将 uuid 文件复制到新的存储库(以获得匹配的 uuid),然后将您的工作副本重新定位到新的存储库 - 更新后(是的,这就是它在 tortoise GUI 中的调用方式!)到存在的旧版本新的存储库。

一个乏味的替代方法是进行完整转储,最后删除不需要的修订版,然后重新加载。但请注意转储必须保持一致。删除中间的修订可能会导致麻烦。

【讨论】:

    【解决方案2】:

    看看这个 TortoiseSVN 帮助主题:Roll back (Undo) revisions in the repository

    虽然SVN might one day grow this feature,但目前无法轻松地从修订历史记录中永久删除修订。

    【讨论】:

    • -1:用户想要从存储库中删除他尝试使用的修订。 TortoiseSVN 无法做到这一点!使用 jdehaan 在他的回答中概述的技术,这可以很容易地完成(因为他对存储 repos 的服务器拥有管理员权限)。
    • @jgifford25:他正在收银台工作。来自问题:“转向 TortoiseSVN 以深入了解并签出我最后一次理智的提交”。此外,我知道“svnadmin 转储/加载”和 svnsync 解决方案都可以删除有问题的修订版。但考虑到导致问题的一系列事件,我很确定 OP 对这两种做法都不满意,也不会将任何一种解决方案描述为“简单”。
    • 此外,如果人们认为现有解决方案“简单”,obliterate 功能请求将不存在。
    • 最后,销毁存储库历史记录应该是最后的手段,仅用于删除机密信息或意外提交的非常大的文件。对于所有错误,这不是您应该习惯性地做的事情。
    猜你喜欢
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    • 2013-02-09
    • 2013-10-19
    • 1970-01-01
    • 2012-03-21
    相关资源
    最近更新 更多