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:如果分行包括与其他分行合并,我认为这将保存他们,只要staging
和stiging
具有相同的父母。 但我肯定会仔细检查。
注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