创建一个不包括旧的提交

时间:2016-04-07 08:40:34

标签: version-control mercurial tortoisehg

所以,我有一个mercurial存储库,如下图所示。我需要创建一个新提交无需更改,这是由两次提交完成的。让这两个提交命名为"提交4"并且"提交16"。但我不能仅仅重写历史记录"并删除这些提交。

enter image description here

2 个答案:

答案 0 :(得分:1)

这是我理解你想做的事情:

  1. 采取最顶层(最新)变更集,让我们称之为变更集23
  2. “撤消”任何变更集4和变更集16在此
  3. 之上

    这会给你:

    1. 变更集23仍然完好无损,完成了任何变更集4和16
    2. 您的新变更集将是23,除非没有变更集4和16
    3. 以下是如何执行此操作,以下是操作之前的历史记录:

           23
           |
           ...
           |
           16
           |
           ...
           |
           4
           |
           ...
      
      1. 更新到最顶层的变更集
      2. 为变更集4创建一个撤销变更集并提交它,这将在变更集23之上提交
      3. 为变更集16创建一个重新设置变更集并提交它,这将在变更集24之上提交
      4. 您的历史现在应如下所示:

             25 (-16)
             |
             24 (-4)
             |
             23
             |
             ...
             |
             16
             |
             ...
             |
             4
             |
             ...
        

        请注意:

        • 变更集23仍包含变更集4和16
        • 变更集25包含变更集23,但是从4和16的变更已被撤消(退出)
        • 如果5及以上的更改依赖于变更集4中引入的更改,和/或17及更新中的更改依赖于变更集16中引入的更改,则会出现合并冲突,您需要在合并时处理这些变更

答案 1 :(得分:1)

答案很简单:backout您不再需要或不再需要的变更集:

hg backout -rXXX

其中XXX是您希望看到的变更集的修订版。因此,在您的情况下,首先检查您的上一个变更集(例如23),然后:

hg backout -r4
hg backout -r16

,你的任务已经完成。