2011-05-06 100 views
25

提交我与转速1,2,3,4,5和HG存储库6HG:撤消历史

当我犯了第4版,我在不知不觉中拙劣一些REV3变化,我不应该有。直到第6版已经付诸实施,我没有注意到这一点。

我需要撤消第4版中的更改,但之后重新应用所有其他更改。基本上取消提交#4。我怎样才能做到这一点?

回答

35

你想hg backout

还原/撤销先前changeset的效果......

回退的工作原理是将一个变更是这样的变更的相反备份出来。这种新的变更致力于repository,并最终合并...

+0

尽管我使用退出,但如何重新应用由于回滚而分别被倒置的变更集5和6?那是我感到困惑的部分。有小费吗? – 2011-05-06 15:28:01

+0

backout会在5,6之后创建一个新的变更集,它实际上是4的倒数。您不需要重新申请5和6 – 2011-05-06 15:30:24

+2

'hg backout -r 4'将颠倒修订版4中所做的更改,而不会触及修订版5和6中所做的更改。帮助系统提供了一个很好的概述(http://www.selenic.com/hg/help/backout)。 – 2011-05-06 15:30:53

4

您可以使用MQ扩展:

hg qinit 
hg qimport -r 4:tip 
hg qpop -a 
hg qdelete 4.diff 
hg qpush -a 
hg qfinish -a 

以上是你如何改写历史,这是你想要什么,我相信。

你也可以使用hg backout,但是在你的工作目录中取消了一个提交,你可以提交。

+2

这就是我要做的*当且仅当*我知道上次从我的存储库中更改集与其他任何人共享的变更集3或更早版本时。否则,当您在变更集4,5和6中引入相同更改的新版本时,您会有一个令人讨厌的小混合头痛。 – 2011-05-06 19:13:59

+0

这是给定的。重写历史记录始终是最后的手段,尤其是当你分享它时。 – manojlds 2011-05-06 19:17:18