我在 mercurial 中创建了一个 named 分支,提交了一些更改,现在我想将其推回中央存储库。我已经完成了一次提取,确认我没有要合并的更改,但是当我尝试进行推送时,我收到消息 push creates new remote head 但我不明白为什么。我是这个分支上唯一的开发人员,它仍然在我的存储库本地。

>hg fetch (pull/update/merge)
>hg status (shows nothing)
>hg push --new-branch mybranch
 searching for changes
 new remote heads on branch 'default'
 new remote head c3064f3cf1b7
 abort: push creates new remote head c3064f3cf1b7!
 (did you forget to merge? use push -f to force)

有任何想法吗?

编辑 :抱歉有任何混淆,这是由 hg branch mybranch 创建的命名分支

更新 :使用 hg heads 会在不同的分支上产生多个头。我的分支有一个,默认情况下有一个:
changeset:   515:97b9a7802751
branch:      mybranch
user:        me <me@mymail.com>
date:        Mon Feb 27 13:21:54 2012 -0800
files:       CryptoRandom.cs
description:
fixing error message for size of max


changeset:   504:c3064f3cf1b7
user:        me <me@mymail.com>
date:        Thu Feb 09 11:41:32 2012 -0800
files:       CipherKey.cs
description:
removing ambiguous characters - CAC-47

使用 hg log -r c3064f3cf1b7 产生以下结果(这是默认的头部):
changeset:   504:c3064f3cf1b7
user:        me <me@mymail.com>
date:        Thu Feb 09 11:41:32 2012 -0800
files:       CipherKey.cs
description:
removing ambiguous characters - CAC-47

最佳答案

令人困惑的是,--new-branch 标志在推送特征分支(也称为任意分支)时没有任何作用。匿名分支如下所示:

... [a] --- [b] --- [c] <- the servers head on default
               \
                [x] --- [y] <- my feature branch on default

所有变更集都在 default 上,因此您现在在 default 上有 两个头 。当您推送时,您将在服务器上创建两个头 - 但 Mercurial 在此之前中止并显示您看到的警告。它中止,因为在服务器上有多个头会令人困惑:当您 hg clone 时,您的工作副本将几乎随机更新为其中之一。
--new-branch 标志仅用于 named branches 。如果您将新命名的分支推送到远程存储库,Mercurial 通常会中止。添加 --new-branch 标志是你告诉它继续的方式。

不幸的是,我们没有专用的 --create-new-feature-branch 标志。我们只有--force标志,该标志告诉Mercurial继续在远程存储库中创建两个头。 --force 的缺点是它否决了所有安全检查:您可以使用该标志推送三个或更多新头,甚至可以推送到不相关的存储库。
所以你应该使用 hg outgoing 来仔细检查你要推送的内容。

我在上面写道,服务器上的多个磁头令人困惑,因为新克隆将被更新为随机磁头。为避免混淆,您可以通过为功能分支添加书签来为其命名。您仍然会被更新为随机头,但 hg bookmarks 会向您显示可用的功能分支,然后您可以更新到正确的分支。因此,如果您正在使用这样的工作流程,请继续使用 hg push -f

关于mercurial - 推送新分支时的新远程头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9473950/

10-13 07:59
查看更多