mercurial - 您如何使用 Mercurial 重新设置不可变变更集?

标签 mercurial rebase

我正在尝试重新调整我在本地机器上所做的一些更改。我收到错误:

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

即使我更改了我正在重新设置基础的变更集上的阶段(并且阶段更改似乎成功),我也会遇到相同的错误。使用:
hg phase -f -d REV

我想知道历史记录中是否有我遗漏的变更集并且仍然不可变,如果有,是否有一种方法可以使用单个命令将变更集历史记录中的所有变更集更改为可变的。

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

最佳答案

对公开的更改进行 rebase 被视为 very bad idea .您不应该更改任何已推送的历史记录——phases 的要点是跟踪哪些更改尚未推送(因此它们能够被修改),以及哪些更改已推送(因此它们是不可变的)。来自 rebase documentation :

You should not rebase changesets that have already been shared with others. Doing so will force everybody else to perform the same rebase or they will end up with duplicated changesets after pulling in your rebased changesets.



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

关于mercurial - 您如何使用 Mercurial 重新设置不可变变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057640/

相关文章:

GIT - 更改早期提交中的代码,以便它反射(reflect)在之后的提交中

git - 我可以使用 git pull --rebase 而不是 "git stash git pull git stash pop"吗?

git - 如何 merge 存储库副本

mercurial - 如何从 Mercurial 中查看源代码

mercurial - Mercurial中的未知父错误

Mercurial:列出所有未 merge 的分支

git - 如何在不计算提交的情况下以交互方式隔离地重新设置 git 主题分支?

Git:交互式地对一系列提交进行 rebase

macos - 我如何将 Mercurial 集成到 Coda 中?

mercurial - 对于Mercurial,我们可以推送一些变更集,而不推送一些变更集吗?