Mercurial - 多头阻止推送,因为命名分支是在流中完成的

时间:2012-08-06 20:18:52

标签: mercurial

我从默认(仅)分支克隆了存储库。许多提交都做了很多工作。我最终希望将当前更改作为单独的开发流推送回存储库。所以我做了一个hg分支8-2-。拉出当前存储库中的内容(仍然只是默认分支)。将更改合并到我的东西中。 现在,当我尝试做hg push --new-branch时,我仍然会发出多个警告:

  

abort:push创建新的远程头57550f12d0f6! (你忘记了吗?   合并?使用push -f强制)

hg是谁:

  

变更集:132:8ab701e45e38分支:8-2-标签:小费   parent:131:3f2c30e8396d parent:129:a45e28d1ef1b user:
  Vance Neff日期:星期一8月06日14:55:14   2012-0400摘要:合并意外的头

     

变更集:129:a45e28d1ef1b用户:Vance Neff    日期:2012年8月2日星期四14:15:08 -0400   摘要:为变更集7d88ac157486添加了标记8-1-29

     

变更集:113:57550f12d0f6用户:Vance Neff    日期:2012年8月2日星期四18:29:32 -0400   摘要:为变更集4ab1691d7120添加了标记8-2-29

我发现在我执行hg分支8-2-,变更集113之前,有问题的头是最后一次提交。

我该如何解决这个问题?注意:我已经阅读了有关在这里使用命名分支的所有警告。太晚了。

谢谢万斯

1 个答案:

答案 0 :(得分:1)

我无法确切地看到您在那里做了什么以及您的存储库的当前状态,但看起来您需要将default上的两个更改集合并在一起。

hg update 129
hg merge 113
hg commit -m "merge"

之后,你只会在default上只有一个头,一切都很好。

或者,您可以使用strip命令删除出错的所有(未推送)更改。然后你可以重做它们。请注意,请确保仅删除hg outgoing中显示的更改集,以便不删除任何公开更改集。

提示:当我对即将运行的命令没有信心时,我通常会在执行它之前制作一个克隆或副本的存储库,以便我可以轻松地恢复到原始状态。 DVCS的祝福之一:)。