2

我在最近的 4-5 次修订/推送到主存储库中破坏了一些代码。现在我想完全删除这个推送并从那时开始我的存储库的 HEAD。我怎样才能做到这一点?在 SVN 中有 dump 命令,它将整个存储库从一个修订版复制到另一个修订版。Mercurial中有一些替代品或其他方式吗?

4

2 回答 2

4

您可以使用转换扩展来做到这一点。
虽然,我真的不明白为什么人们总是想在他们的 VCS 历史记录中隐藏/删除他们犯的错误。只要您在较新的版本中修复它,它就不是那么重要......

于 2010-09-24T11:46:34.373 回答
2

Quardas,“完全删除”不是 mercurial 的默认词汇表的一部分。这是一个围绕不可变历史构建的系统。你可以扭转你后悔的事情,但你不能删除它。想想一个科学家在他/她的实验室里用钢笔在日志的编号页面上书写——撕掉一页被认为是欺诈。保留你的盲目盟友和错误是有价值的,只要你记得不要再试一次。

考虑使用hg backoutwhich 轻松自动地添加变更集的逆,从而完全撤消它,但保留变更集及其反转的记录。

如果您真的无法接受该概念,请尝试研究clone -r. 它允许您将存储库克隆到某个点。例如:

hg clone -r -6 myrepo partial-myrepo
mv myrepo myrepo-with-stuff-I-regret
mv partial-myrepo myrepo

这将用省略最后五个变更集的新副本替换您的存储库。

还有很多其他方法可以使用不属于 mercurial 默认工具集的工具(扩展,如 histedit、strip、mercurial 队列等)来做同样的事情,但你最好不要删除历史记录并执行它如果您这样做,则无需扩展。

于 2010-09-24T15:56:32.230 回答