在mercurial中创建一个新分支:“abort:push创建新的远程头部”

时间:2012-01-31 19:29:46

标签: mercurial branch dvcs

我正在尝试做一些非常简单的事情:创建一个新的分支。但我搞砸了。我在哪里弄错了,我该如何解决?

我是Mercurial的唯一用户。我将修订版54提交并推送到远程存储库。我想基于修订版53创建一个分支,因此我将本地副本更新为修订版53,进行了更改并提交(忽略关于“它不是头部”的警告)。然后,当我试图推送到远程存储库时,它说

abort: push creates new remote head

也许我需要告诉Mercurial我想创建一个新的分支?如果是这样,如何以及在什么时候?

谢谢!

3 个答案:

答案 0 :(得分:36)

你告诉Mercurial它可以继续

$ hg push --force

你需要强制它,因为通常不鼓励多个(未命名的)头。他们的问题是克隆存储库的人不会知道使用哪一个。但由于你是唯一的用户,你可以继续推进。

替代方法是使用named branch(使用hg branch),然后您将使用

$ hg push --new-branch

允许在遥控器上创建新分支。 Named branches的优势在于它们可以轻松区分这两个分支。它们的缺点是它们是永久性的。永久意味着您无法从分支上的变更集中删除分支名称 - 该名称实际上直接烘焙到变更集中。

Bookmarks提供了一种获取非永久性分支名称的方法,请参阅hg help bookmarks

答案 1 :(得分:1)

此错误的另一个原因:可能是默认分支中的中央仓库发生了一些UNMERGED更改。

--externals <the directory>

答案 2 :(得分:0)

我这样做了。使用TortoiseHg ......这就是我修复它的方法:

在设置中,我启用了Strip扩展,然后右键单击了我不想要的分支,Modified History - strip。如果你已推,那么它需要从所有其他存储库中删除,包括拉掉你不想要的分支的工作人员。

另一种方法是将不需要的分支合并到主分支中,但不要从该分支中​​进行任何更改 - 我不确定该机制是如何工作的。