我正在尝试做一件非常简单的事情:创建一个新的分支。但我搞砸了。我在哪里犯的错误,我该如何改正?
我是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。如果你已经推送了,那么它需要从所有其他存储库中删除,包括那些删除了你不想要的分支的同事。
另一种选择是将不需要的分支合并到主分支中,但不要从该分支中进行任何更改——我不确定该机制是如何工作的。