无法将分支推送到远程 Hg 仓库

Can't push branch to remote Hg repo

我昨天通过 Google 搜索并通过 SO 寻找答案,但找不到任何人遇到我遇到的确切问题。

不久前,我在本地 Mercurial 存储库中的 Rev 176 创建了一个分支,并在 Rev 196 创建了命名分支,"Port to VS2010." 请参见下面的 TortoiseHg 屏幕截图。我已经能够成功地将另一个“006-x86 和 x64 构建”分支推送到远程仓库,但是每当我尝试推送新分支时,我都会在日志中收到此错误:

abort: push creates new remote head 207852dab969!
hint: merge or see "hg help push" for details about pushing new heads

没有合并或强制,我怎么推这个分支?它代表了一个可能永远不需要的暂定解决方案,但我想保留它以防万一。

(注意:您会注意到 Rev 列中的三个空白。它们代表“006-x86 和 x64 构建”分支的非实质性变更集。我删除它们是为了缩短图像。)

更新: 每个懒惰的獾:

acs_FromBuildServer_edited% hg heads -T "{node|short} {branch}\n"
% hg heads -T "{node|short} {branch}\n"
24af28a99211 006-x86 and x64 Builds
69be2af28b7c Port to VS2010
207852dab969 default
86e00db4ba95 005-No Register CardContext
9df44947cc8b 004-Hack typedef boost shared_ptr
81055bcdb3cc 003-Use boost shared_ptr
6358126f4757 002-Add Meyers Fix
1e23ed012883 001-Solution
bcc01f6fbef4 default
[command completed successfully Fri Feb 12 11:15:36 2016]
acs_FromBuildServer_edited% 

其实,你只有两个选择。您可以合并,也可以强制执行。我认为在你的情况下你想强制它。

通常,您不想强行使用新头像,因为其他开发人员可能不知道新头像。由于这是一个您只想为子孙后代保留的实验,因此可以强制执行它。如果你发现你需要它,你会在那个时候合并它。

看来您可能混合了两个不相关的问题

  • 匿名分支(某些分支的 2 个头)
  • 推送新的(远程不存在的)分支

新的(命名的)分支必须在默认推送命令(CLI 中的--new-branch)或 THG GUI 中的"Allow push to new branch" 复选框中添加选项的情况下推送

在共同的坏主意中加入额外的头,最好在预先存在的分支中找到这个新头并合并

嗯,不出所料,你有两个 default 分支的负责人

207852dab969 default
...
bcc01f6fbef4 default

并且根据错误消息,头 207852dab969 (r195) 是新的,尚未推送。不,关闭分支将 而不是 允许您推送分支。如果你不想合并或强制推送,你可以将不同的历史(从分支点)移动到另一个命名的分支