繁体   English   中英

将线性历史拆分为Mercurial中的两个分支

[英]Splitting linear history into two branches in Mercurial

我有一个mercurial存储库历史记录,如下所示:

A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F

我想将其转换为以下历史:

A -> B -> C -> D -> E -> F
           \_ N1 -> N2 -> N3

鉴于我有一个克隆历史在C停止的克隆,最好的方法是什么? DEF变更集与N1 N2 N3变更集不冲突。 好吧,至少我希望如此;)

无需克隆,您可以在原始仓库中工作。 您可以在C之上移植D,E和F,创建副本D1,E1和F1(如果没有冲突的变化,它将与原始副本相同)。 你会有这个:

A -> B -> C -> N1 -> N2 -> N3 -> D -> E -> F
           \_ D1 -> E1 -> F1

然后你可以剥离原件。 请参阅下面的脚本。

$ hg update C
$ hg transplant D E F
$ hg strip D

你必须启用两个扩展: transplantmq 为此,请将这些行添加到hgrc

[extensions]
transplant=
mq=

更新:从Mercurial 2.0开始,可以使用graft (内置命令)代替transplant ; 正如劳伦斯霍尔斯特所暗示的那样 ,rebase应该同样有效。

你可以使用rebase

hg rebase --source D --dest C

这适用于Mercurial 2.0; 以前,它曾经在重新定位到祖先版本时抱怨,但他们删除了。

如果您还没有,则必须启用rebase扩展

[extensions]
rebase =

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM