我在最近的4-5次修订中打破了一些代码/推送到主存储库。现在我想从那一点完全删除这个推送并启动我的存储库的HEAD。我怎样才能做到这一点?在SVN中有dump命令,它将整个存储库从一个修订版复制到另一个版本。 Mercurial或其他方式有一些替代品吗?
答案 0 :(得分:4)
您可以使用convert extension来做到这一点 虽然,我真的不明白为什么人们总是想在他们的VCS历史中隐藏/删除他们犯了错误。只要你在更新版本中修复它就不那么重要了......
答案 1 :(得分:2)
Quardas,“完全删除”不是mercurial默认词汇的一部分。这是一个围绕不可变历史建立的系统。您可以撤消后悔的内容,但不要删除它。想想他/她实验室中的科学家用笔在日志中的编号页面上写作 - 剥离页面被视为欺诈。如果只记得不再尝试那样,那么保留你的盲人和错误是有价值的。
考虑使用hg backout
,它可以轻松自动地添加变更集的反转,从而完全撤消它,但保留变更集和逆转变量集的记录。
如果你真的无法购买这个概念,请尝试调查clone -r
。它允许您将存储库克隆到某个点。例如:
hg clone -r -6 myrepo partial-myrepo
mv myrepo myrepo-with-stuff-I-regret
mv partial-myrepo myrepo
将使用省略最后五个变更集的新副本替换您的仓库。
使用不属于mercurial默认工具集(扩展名,如hetedit,strip,mercurial队列等)的工具,还有很多其他方法可以做同样的事情,但你最好不要删除历史记录。并且如果你这样做,那就不用扩展。