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

问题描述 投票:0回答:5

update to the
mercurial branch dvcs
5个回答
229
投票
分支,并在其上创建一个新的分支。然后关闭旧分支。

摘要:

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

对于将来的读者:使用

63
投票
扩展,您可以将新的分支与同一位父母与

stiging

一起移动,然后将整个分支历史记录移动到其中:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging

这是假设
stiging
有一个父母。当然,您可以改用明确的修订号。

注意:如果分支
stiging

包括与其他分支的合并,则只要有相同的父母,就可以保留它们。 但是我当然会仔细检查。

注:由于它编辑了历史记录,因此旧分支不会简单地从克隆的存储库中消失(请参阅

staging
文档)。除非每个人都可以重新克隆,否则这可能不是一个非常实用的解决方案。 NOTE3/EDIT(由@JasonRcoombs提供):既然plasees是Mercurial的标准配置,
stiging
将拒绝修改已经被推动的更改。要么通过将阶段返回到草稿(带有
rebase
)来欺骗它,要么让旧分支留在原处,然后制作正确命名的副本(例如,使用“ HG rebase -keep”)。

制作一个名为“分期”的新分支,忘记了另一个...

如果您的更改集,那么您必须使用带有分支图的ConconvertExtension将其重命名。然后,每个人都必须克隆新的存储库或从旧的分支上剥离。


这修改了历史记录,仅适用于先进的Mercurial用户。如果您不知道这意味着什么。

如果仅是本地污名,则可以将其更改为

晶和

16
投票
的组合。首先更新污名分歧的祖先更改集。创建分阶段分支,并将每个人从柱头到分阶段提交。现在分期应该是柱头的副本。最后,通过剥夺其第一个提交来破坏stig。

rebase


16
投票

如果您使用的是evolve扩展,另一种方法是使用

hg phases

9
投票

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

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.