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

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

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

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

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

===============>>#1 票数:6 已采纳

无需克隆,您可以在原始仓库中工作。 您可以在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应该同样有效。

===============>>#2 票数:2

你可以使用rebase

hg rebase --source D --dest C

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

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

[extensions]
rebase =

  ask by shodanex translate from so

未解决问题?本站智能推荐:

3回复

Mercurial分支修订历史,推动时两个偏头

我在本地(23-28)提交了一系列变更集,然后我意识到我想回到25版,所以我跑了“hg up -r 25”回去。 然后我从那里开始工作并提交了一些变更集。 现在我已准备好将我的更改推送到服务器,但是当我尝试这样做时,它会抱怨“abort:push在分支上创建新的远程头部'默认'!”。 我以
2回复

如何在Mercurial中创建两个独立的分支?

我们正在使用Mercurial管理一个项目A,该项目链接到旧版本的外部系统。 现在可以使用该外部系统的新版本,我现在想创建同一项目的第二个版本B来使用它。 尽管两个版本都将共享它们的许多代码,但我不希望对一个项目进行更改以影响另一个项目。 我想独立更改每个的代码库。 请问该如
1回复

如何在Mercurial中同步两个分支?

在上游Mercurial存储库的本地分支中,我有多个分支。 在开始使用过时的分支feature之一之前,我想从本地default分支获取所有更改。 我怎么做? 当我执行时: 我收到一条错误消息:
2回复

在断开分支提交后,在Mercurial中存在两个默认分支

我遇到了工作上的困难(如下面的简化草图所示)。 在创建分支期间,由于某种原因,默认值被作为分支的父级卡住,但仍然单独保留默认分支(这是我们正在使用的默认分支)。 这给我们留下了两个默认分支。 有人误解了如何在分支之前提交更改,因此我们最终将branch1中所做的更改合并到branch2
1回复

将包含重命名和编辑的mercurial提交拆分为两个提交(首先重命名,然后编辑)

有没有办法可以修改mercurial中的历史记录,以便将一个提交分成两个单独的提交? 第一个应该只包含重命名/移动,第二个应该包含编辑。 这将有助于与其他版本控制系统(例如perforce)的互操作性。 我希望用脚本自动完成这个过程。
1回复

我可以在Mercurial中合并两个文件的历史记录吗?

我需要将两个类的功能合并为一个,但我想知道我可以将他们的更改历史记录合并吗? 这两个类都包含许多以前的更改,因此我希望将其更改历史记录保存在一个位置以供参考。 我可以在组合类中发表评论,但在IDE中,获取已删除文件的历史记录并不容易。
2回复

在Mercurial中,我可以在两个分支之间合并一些文件吗?

阅读Mercurial,似乎总是分支和合并完整的存储库。 是否可以将一些文件从一个分支合并到另一个分支? (例如,我可能只希望合并修复给定错误的文件。) 同样我可以选择一些更改集,但仍然有一个正确的合并记录,所以如果我完成合并后来完成它是正确的吗? 我来自一个强大的“心态”,
2回复

如果没有要合并的话,如何在Mercurial中合并两个分支

我是一个善变的人,我正在尝试做一些非常简单但却无法弄清楚如何做的事情。 我创建了一个分支来做一些实验而不会打扰主分支。 我喜欢实验的方式,并希望将它与trunk合并并获得 但是,由于'trunk'分支中没有任何改变,合并表示没有任何合并,这是公平的。 我只需要结束一个名为“t
1回复

在Git和Mercurial的两个分支之间进行区分

我有两个存储库。 一种是Git存储库。 其他是Mercurial储存库。 是否可以显示两个存储库之间的两个分支之间的差异?
3回复

Mercurial:如何处理一个有两个头的分支

如果一个分支有两个头怎么办? 几个星期前我出现了这种情况,因为某些原因我当时没有将它们合并,只是继续在一个头上开发。 现在我想摆脱另一个头。 我该怎么办? 我应该在这么多变更后合并它们吗?