如何使用Mercurial重新定义不可变的变更集?

时间:2012-12-27 16:12:04

标签: mercurial rebase

我正在尝试修改我在本地计算机上添加的一些更改。我收到了错误:

abort: can't rebase immutable changeset 110e73ed65a4
(see hg help phases for details)

即使我改变了我正在改变的变更集的阶段(并且相变似乎成功),我也得到了相同的错误。使用:

hg phase -f -d REV

我想知道历史记录中是否存在我缺少的变更集,并且仍然是不可变的,如果有的话,如果有办法我可以将变更集的历史记录中的所有变更集更改为可变的单一命令。

或者,有没有办法强制使用rebase,即使使用不可变的变更集?

1 个答案:

答案 0 :(得分:6)

重新公开的更改被视为very bad idea。您不应该更改任何被推送的历史记录 - phases的目的是跟踪尚未推送的更改(因此可以对其进行修改)以及已推送的更改(因此他们是不可改变的。来自rebase documentation

  

您不应该重新定义已经与他人共享的变更集。这样做会强制其他人执行相同的rebase,或者在提取您的重新设置的更改集后最终会出现重复的更改集。

最好合并您的更改或graft它们.Graft(也称为cherry-picking)需要一个或多个更改集并将它们复制到您当前的分支。