Mercurial:我可以重命名一个分支吗?

我们现在有一个“鼓动”的分支,“分期”似乎是一个更好的语义契合。 什么是处理这个好策略?

更新到stiging分支,并创build一个新的分支。 然后closures旧的分支。

综上所述:

 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 

对于未来的读者:通过延期续约,您可以创build一个新的分支,并与同一个父分支进行stiging ,并将整个分支历史logging移至该分支,如下所示:

 hg update -r "parents(min(branch('stiging')))" hg branch staging hg commit hg rebase --source "min(branch('stiging'))" --dest staging 

这假定stiging只有一个父母。 当然,您可以直接使用显式修订版本号。

注1:如果分行包括与其他分行合并,我认为这将保存他们,只要stagingstiging具有相同的父母。 但我肯定会仔细检查。

注2:由于这个编辑历史,旧分支不会简单地从克隆存储库中消失(请参阅rebase文档)。 除非每个人都能重新克隆,否则对于一个大集团来说,这可能不是一个很实际的解决scheme。

注3 /编辑(礼貌@JasonRCoombs):现在阶段是在mercurial的标准, rebase将拒绝修改已被推动的变更集。 要么通过改变阶段回到草稿(与hg phases ),或让旧的分支留在原来的地方,只是做一个正确的命名副本(例如,与'HBG rebase –keep')。

如果你有它的变化,那么你将不得不使用转换扩展与分支机构来重命名它。 那么每个人都必须克隆新的回购或剥离旧的分支。

做一个叫做“舞台”的新分支,忘记另一个…

这修改了历史logging,仅适用于高级Mercurial用户。 不要这样做,如果你不知道这是什么意思。

如果搅拌仅限于本地,则可以将其更改为使用移植和剥离的组合。 首先更新到祖先变更集,在那里分歧已经发生。 创build分段分支并将每个提交从搅动分段移植到分段。 舞台现在应该是一个鼓舞人心的副本。 最后,通过剥夺其第一次承诺来消除骚扰。

 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