Mercurial no-op合并以保存历史和关闭分支

时间:2009-12-18 11:29:32

标签: mercurial merge

alt text http://img38.imageshack.us/img38/1863/screenshot20091218at112.png

修订版107意外地将所有更改从100-106

合并

修订版108是hg revert --all -r 106,然后是hg commit,这可能是错误的事情,因为我没有合并我做出所有更改的分支,而是包含了所有更改进入一个没有描述或历史的变革集。

A)我应该如何在第一时间合并分支?

但更重要的是:

B)我现在如何合并分支?

2 个答案:

答案 0 :(得分:2)

如果您还没有将回购推送到任何地方,您可以轻松解决问题:

   cd ..
   hg clone -r 106 current newcurrent
   cd newcurrent
   hg pull -r 97 ../current

现在newcurrent是一个回购,看起来和你的旧回购在107和108之前完全一样。

要合并这两者,只需执行:

   hg update  # which gets you to tip
   hg merge   # which merges in the other head and forces you to make choices

目前还不清楚你在创建107时做错了什么,所以我不知道如何在实践中建议改变,但它应该是一个简单的合并问题。意外消除一个分支中的所有更改应该是hard

答案 1 :(得分:1)

如果可能的话,备份存储库,以便您可以安全地进行实验。

此命令将撤消上一个事务:

hg rollback -h

此命令可帮助您撤消合并并恢复:

hg backout -h

此命令会将您的工作目录恢复到以前的状态,而不会影响存储库:

hg revert -h

每种情况下的-h选项都为您提供了该命令的帮助。准备好应用命令时删除-h选项。

我的第一个实验是:

hg rollback
hg merge -r 106

计划回到修订版107,看起来像包含变更集95和96的头部的成功合并,然后合并到包含变更集97,100-106的头部。