如何在mercurial中恢复后合并?

时间:2010-04-14 09:48:51

标签: mercurial

我的合并很糟糕。现在我想重新开始合并。合并前我做了一个恢复。现在,当我尝试添加捆绑包时,我收到了消息,它无法再找到更改。怎么了?为什么不发现任何变化?

c:\Documents and Settings\Desktop\New Folder\test_rev94_to_tip_hg\test_rev94_to_tip.hg
searching for changes
no changes found
[command completed successfully Tue Apr 13 16:10:37 2010]

变更:

  

105:默认提示合并   104:退出chageset 26e351596da9   103:恢复错误   102:还原   101:删除tabledata   100合并...........   合并代码   99:赋值,变更集26e351596da9   98:重构代码97:96:95:...............   94:版本1

我想恢复到94,然后再次合并。

3 个答案:

答案 0 :(得分:1)

当您返回到未合并的修订版时,可以重新合并,并指定要在其中合并的其他修订版。说合并后的repo具有以下布局:

o    changeset:   4:a72f471ed717
|\   parent:      3:abd9c586bce0
| |  parent:      2:6827b9817642
| |  user:        Rudi 
| |  date:        Wed Apr 14 12:09:39 2010 +0200
| |  summary:     Merged
| |
| o  changeset:   3:abd9c586bce0
| |  parent:      1:11e62ba50646
| |  user:        Rudi 
| |  date:        Wed Apr 14 12:09:29 2010 +0200
| |  summary:     branched
| |
o |  changeset:   2:6827b9817642
|/   user:        Rudi 
|    date:        Fri Feb 12 15:30:34 2010 +0100
|    summary:     Something other changed
|
o  changeset:   1:11e62ba50646
|  user:        Rudi 
|  date:        Fri Feb 12 14:28:48 2010 +0100
|  summary:     Something changed
|
o  changeset:   0:b42b1175ba6b
   user:        Rudi 
   date:        Fri Feb 12 14:16:13 2010 +0100
   summary:     Initial

在这里,您可以使用hg up -r 3转到合并前的更改集。在那里你发出hg merge -r 2来重做合并。在提交之后,repo看起来像这样:

@    changeset:   5:65d010bb347a
|\   tag:         tip
| |  parent:      3:abd9c586bce0
| |  parent:      2:6827b9817642
| |  user:        Rudi 
| |  date:        Wed Apr 14 12:54:42 2010 +0200
| |  summary:     merge redone
| |
+---o  changeset:   4:a72f471ed717
| |/   parent:      3:abd9c586bce0
| |    parent:      2:6827b9817642
| |    user:        Rudi 
| |    date:        Wed Apr 14 12:09:39 2010 +0200
| |    summary:     Merged
| |
| o  changeset:   3:abd9c586bce0
| |  parent:      1:11e62ba50646
| |  user:        Rudi 
| |  date:        Wed Apr 14 12:09:29 2010 +0200
| |  summary:     branched
| |
o |  changeset:   2:6827b9817642
|/   user:        Rudi 
|    date:        Fri Feb 12 15:30:34 2010 +0100
|    summary:     Something other changed
|
o  changeset:   1:11e62ba50646
|  user:        Rudi 
|  date:        Fri Feb 12 14:28:48 2010 +0100
|  summary:     Something changed
|
o  changeset:   0:b42b1175ba6b
   user:        Rudi 
   date:        Fri Feb 12 14:16:13 2010 +0100
   summary:     Initial

然后你需要合并r4和r5来获得这个操作的最终结果。

答案 1 :(得分:0)

hg strip你错误的合并和hg update -C(-C for clean)你以前的任何头脑。然后,您可以再次进行合并。

我不清楚你的捆绑包中应该有哪些变更集,似乎你已经在你的仓库中拥有它们或者没有共同的祖先转换捆绑包中的内容?

如果您未指定特定修订版hg revert,则会将单个文件更新为其tip版本(触及该文件的最后一个版本)。

答案 2 :(得分:0)

请注意,revertupdate不同。如果您想重试合并,请不要尝试revert到前一个(合并前)头部update。然后你可以再次尝试合并。

例如,假设A是您的共同祖先,B是您的分支,C是您已拉入并希望合并的分支D是失败的合并。

A -- B ------- D
  \          /
   ------ C -

您在B,已加入C,将C合并到B并提交为D

如果您想再次尝试合并,请更新到B,再次合并并提交为E,然后留下:

A -- B ------- D
  \          X
   ------ C ----- E

一旦您对E的工作感到满意,那么您是strip D还是留在{{1}}还是留给后人的。