在我最近的4-5次修改/推送到主库中,我破坏了一些代码。现在,我想完全删除这个推送,并从这一点开始我的存储库的头。我该怎么做呢?在SVN中有一个转储命令,它将整个存储库从一个修订版复制到另一个修订版。在Mercurial或其他方式中有一些替代品吗?
发布于 2010-09-24 23:56:32
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默认工具集的工具(例如histedit、strip、mercurial queues等扩展),还有很多其他方法可以做同样的事情。但你最好不要删除历史记录,如果你这样做了,你最好不要删除历史记录,不要删除扩展名。
发布于 2010-09-24 19:46:34
您可以使用convert extension来做到这一点。
虽然,我真的不明白为什么人们总是想在他们的VCS历史中隐藏/删除他们犯了错误。只要你在新的版本中修复它,它就不那么关键了……
https://stackoverflow.com/questions/3785397
复制相似问题