Answers:
更新到该stiging
分支并从中创建一个新分支。然后关闭旧分支。
综上所述:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
。例如:hg branch --force v3
。这将导致根据需要hg update v3
更新到新v3
分支。
stiging
在分支之前关闭,则不会“松动”
对于未来的读者:通过rebase
扩展,您可以创建一个具有相同父级的新分支,stiging
并将整个分支历史记录移至该分支,如下所示:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
假设stiging
只有一个父母。当然,您可以只使用显式的修订号。
注1:如果分支stiging
包括与其他部门合并,我认为这会保护他们,只要staging
与stiging
具有相同的父。但是我当然会仔细检查。
注意2:由于这会编辑历史记录,因此旧分支不会简单地从克隆的存储库中消失(请参阅rebase
文档)。除非每个人都可以重新克隆,否则对于大多数人来说,这可能不是一个非常实用的解决方案。
Note3 / Edit(@JasonRCoombs提供):现在,阶段是标准的阶段,rebase
将拒绝修改已经推送的变更集。要么通过将阶段更改回草稿(带有hg phases
)来愚弄它,要么让旧分支留在原来的位置,然后制作一个正确命名的副本(例如,使用`hg rebase --keep')。
hg convert
改用。
--keep
给rebase命令,该命令将复制而不是移动更改。
abort: can't rebase immutable changeset 11b1e2b7dc4f
。请注意,我已经将变更集从另一个分支移植到了这个分支中。除此之外,它还可以自由拆分和合并。
.
用作您的--dest
值,并且重新设置将自动采用新的分支名称。
这会修改历史记录,并且仅适用于高级Mercurial用户。如果您不知道那是什么意思,请不要这样做。
如果拆线仅是局部的,则可以通过嫁接和剥皮的组合将其更改为分段。首先更新到激励发生分歧的祖先变更集。创建登台分支,并将从提交到登台的每个提交都嫁接。现在,登台应该是仿制的复制品。最后,通过删除其第一次提交来销毁鼓舞。
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}