在 Mercurial 中创建新分支:"abort: push creates new remote head"



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

我是Mercurial的唯一用户。我提交了第54次修订,并将其推送到远程存储库。我想在修订版53的基础上创建一个分支,所以我将本地副本更新到修订版53,进行了更改,并提交了(忽略了"它不是头"的警告)。然后,当我试图推送到远程存储库时,它说

abort: push creates new remote head

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

谢谢!

您告诉Mercurial可以继续

$ hg push --force

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

另一种选择是使用命名的分支(带有hg branch),然后使用

$ hg push --new-branch

以允许在远程上创建新分支。命名分支的优点是可以很容易地区分这两个分支。他们的缺点是他们是永久性的。永久性意味着您不能从分支上的变更集中删除分支名称——该名称实际上是直接烘焙到变更集中的。

书签提供了一种具有非永久分支名称的方法,请参见hg help bookmarks

出现此错误的另一个原因:您的默认分支机构中的中央回购可能存在一些未合并的更改。

hg up default
hg merge
hg ci -m "Merge"
hg pus

我做到了。使用TortoiseHg。。。我就是这样修复的:

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

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

最新更新