我可以追溯性地将Mercurial修订版移到分支机构吗?

时间:2017-01-27 20:07:43

标签: mercurial branch

我有一个带有自然长期分支兼叉的项目;我不想将它与默认分支重新合并。我最初使用书签来管理这个fork,但是在反射时将它作为一个命名分支似乎更有意义,所以(没有考虑太多)我在书签头(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),它不会去任何地方(因为它'它真的是分支/分支的一部分,我不打算在default分支上承诺(4)。但这意味着存储库现在有点凌乱:我有一个fork,它部分存在于default分支上,部分存在于命名分支上,部分存在于default上看起来好像应该稍后合并。而且,这种不整洁是一件可怕的事情(或许我应该更多)。

我想要的是(a)神奇地将选定的修订版(即通向现在孤独的头部的修订版)放到指定的分支上,或者(b)返回计划A(书签)和回顾性地将指定分支(5& 6)上的修订放回default分支并添加书签。

的可能性:

  1. 有一个问题Move branch start in Mercurial与此重叠,但是假设将来会重新合并分支。另外,我非常希望将中间(post-fork pre-branch)修订保留在分支上。
  2. 使用hg convert创建存储库副本减去分支,创建分支,然后开始手动应用变更集。凌乱而且容易出错,但可行(分支中没有太多的修订)。
  3. 承认生活是混乱的,充满了失望,历史就是历史,我应该不再担心inessentials。
  4. 或...
  5. 我坚持魔法。

1 个答案:

答案 0 :(得分:1)

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

  2. 关闭头。更新到rev。 4,关闭那里的分支。

  3. <强>衍合即可。如果修订版2,4,5,6处于draft阶段。你可以从rev开始重新定义。 2,将所有后代移动到另一个分支。

  4. 选项1和2仅隐藏不需要的头部(历史记录不变)。要重写历史记录,请使用选项3。

    1. 重新投放到默认。您也可以从修订版5中进行修改,将该分支移回default。再次使用书签,因为分支从未存在过。