如何通过多个后代头来压缩汞柱修订

时间:2019-03-25 19:16:36

标签: version-control mercurial

在我尝试推送到主存储库之前,我正在尝试清理一些本地(草稿)商品历史。我要采取的一个步骤是将“ Fixup”变更集压缩/汇总到其父级中。我的历史记录如下:

o  [draft] 14 X
|
| o  [draft] 13 Y
|/
o  [draft] 12 Fixup
|
o  [draft] 11 Thing to Fix
|
o  [draft] 10 Z
|
~

完成后,它应如下所示:

o  [draft] 13 X
|
| o  [draft] 12 Y
|/
o  [draft] 11 Thing to Fix with Fixup
|
o  [draft] 10 Z
|
~

显然,将两个提交滚动在一起不会造成任何冲突,因为后代的代码未受影响。但是,我找不到找到histedit的方法来允许我编辑历史记录,因为它需要编辑“一个变更集及其所有后代。”

可以进行此编辑吗?应该怎么做?

1 个答案:

答案 0 :(得分:2)

肯定是可能。不过,我不知道如何轻松

诀窍是解决这个问题:

o  [draft] 14 X
|
| o  [draft] 13 Y
|/
o  [draft] 12 Fixup
|
o  [draft] 11 Thing to Fix
|
o  [draft] 10 Z
|
~

进入:

o   [draft] 16 Fixup
|
o   [draft] 15 Thing to Fix
|
| o  [draft] 14 X
| |
| | o  [draft] 13 Y
| |/
| o  [draft] 12 Fixup
| |
| o  [draft] 11 Thing to Fix
|/
o  [draft] 10 Z
|
~

其中15是11的副本,而16是12的副本。(使用hg graft来完成。)现在,您可以使用hg histedit来将这两者结合起来。

现在很容易在替换旧的15和16的新15上面复制13和14:

o  [draft] 17 X
|
| o   [draft] 16 Y
|/
o   [draft] 15 Thing to Fix with Fixup
|
| o  [draft] 14 X
| |
| | o  [draft] 13 Y
| |/
| o  [draft] 12 Fixup
| |
| o  [draft] 11 Thing to Fix
|/
o  [draft] 10 Z
|
~

现在,您可以hg strip -r 11删除11、12、13和14,仅保留已更正的提交。 (请注意,您可以使用rebase来简化此操作。长格式主要用于说明和易于理解。)