我可以追溯地将 Mercurial 修订移动到分支吗?

Can I retrospectively move Mercurial revisions to a branch?

我有一个自然长期分支兼分叉的项目;我不想将它与默认分支重新合并。我最初用一个书签来管理这个分支,但经过深思熟虑,将它作为一个命名分支似乎更有意义,所以(没有考虑太多)我在带有书签的头部(4)创建了一个分支。

o 7:default
|
| o 6:fork
| |
| o 5:fork
| |
| o 4:default
| |
o | 3:default
| |
| o 2:default
|/
o 1:default
|
o 0:default

但这意味着我现在在 default 分支上有一个分支 加上 一个孤独的头 (4),它不会去任何地方(因为它是确实是 branch/fork 的一部分,我不打算在 default 分支上承诺 (4))。但这意味着存储库现在有些不整洁:我有一个分叉,它部分存在于 default 分支上,部分存在于命名分支上,因为它在 default 上看起来好像应该稍后合并。哦,不整洁是一件可怕的事情(也许我应该多出去走走)。

我想要的是 (a) 神奇地将选定的修订(即导致现在孤独的头的修订)放到指定的分支上,或者 (b) 返回计划 A(书签)和追溯将命名分支(5 和 6)的修订放回 default 分支并添加书签。

可能性:

  1. 有一个问题 Move branch start in Mercurial 与此重叠,但它是根据分支将来会重新合并的期望来构建的。另外,我很想保留中间(post-分支前分支)修订作为在分支上。
  2. 使用 hg convert 创建存储库的副本(减去复刻),创建分支,然后开始手动应用变更集。杂乱且容易出错,但可行(分支中没有太多修订)。
  3. 承认生活是混乱和充满失望的,历史就是历史,我应该停止担心无关紧要的事情。
  4. 或...

我正在等待魔法。

  1. 幽灵合并。将修订版 4 合并到修订版 7 中。丢弃所有 转速变化4 进行合并时。

  2. 收头。更新到转。 4、关闭那里的分支

  3. 变基。如果修订版 2、4、5、6 处于 draft 阶段。您可以从 rev 开始变基。 2、将所有后代移动到另一个分支。

选项1和2只会隐藏不需要的头像(历史不变)。要重写历史记录,请选择选项 3。

  1. 重新设定为默认值。您还可以从修订版 5 变基,将该分支移回 default。再次使用书签,因为分支从未存在过。