我在最近的 4-5 次修订/推送到主存储库中破坏了一些代码。现在我想完全删除这个推送并从那时开始我的存储库的 HEAD。我怎样才能做到这一点?在 SVN 中有 dump 命令,它将整个存储库从一个修订版复制到另一个修订版。Mercurial中有一些替代品或其他方式吗?
问问题
379 次
2 回答
4
您可以使用转换扩展来做到这一点。
虽然,我真的不明白为什么人们总是想在他们的 VCS 历史记录中隐藏/删除他们犯的错误。只要您在较新的版本中修复它,它就不是那么重要......
于 2010-09-24T11:46:34.373 回答
2
Quardas,“完全删除”不是 mercurial 的默认词汇表的一部分。这是一个围绕不可变历史构建的系统。你可以扭转你后悔的事情,但你不能删除它。想想一个科学家在他/她的实验室里用钢笔在日志的编号页面上书写——撕掉一页被认为是欺诈。保留你的盲目盟友和错误是有价值的,只要你记得不要再试一次。
考虑使用hg backout
which 轻松自动地添加变更集的逆,从而完全撤消它,但保留变更集及其反转的记录。
如果您真的无法接受该概念,请尝试研究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 回答