【问题标题】:"push creates new remote head" issue“推送创建新的远程头”问题
【发布时间】:2014-08-02 20:21:44
【问题描述】:

我阅读了有关此问题的所有 SO 问题,但仍然无法解决。

我正在使用 TortoiseHg。我在一个分支上工作,现在我想将它合并回主分支。我提取了在两个分支中所做的所有更改,更新到主分支,并合并(并提交)。但是当我尝试推送所有这些时,我收到“中止:推送创建新的远程头”消息。

我还尝试(如 SO 中的一个问题所建议的那样)使用 --close-branch 选项关闭分支。

我唯一没有尝试的是“强制”推送。 有什么建议么?还是强制推动是唯一的选择?

【问题讨论】:

标签: version-control mercurial tortoisehg


【解决方案1】:

仅适用于遇到此问题的其他所有人。 对我来说造成这个问题的原因是我在开始处理新分支之前没有推送默认分支上的一些本地修订。

我已将我为 default 分支 提取的最新修订版与我的 new 分支合并,但这些会将您的本地更改留给 default 分支 承诺但未推动。

如果您尝试推送它们,创建远程头的不是您的新分支,而是创建远程头的默认分支的未推送的修订。

当我用 hg strip -r 1234 删除这些修订时

hg push --new-branch 

完美。

让我走上正轨的是

hg heads

显示我有两个头,它们都有默认分支的名称和不同的修订号。

【讨论】:

  • 感谢您的“它未推动默认分支创建远程头”!对我来说,解决方法是 a)在 TortoiseHg Workbench 中打开目标存储库(在本地文件共享上),b)更新到那里的最新版本,c)从我的本地存储库中提取比服务器版本更新的 1 个版本,d)关闭服务器存储库,最后从本地存储库推送所有更改。
  • hg strip 不存在了,我可以说。新命令是什么?
【解决方案2】:

我刚刚尝试了类似的设置,但收到了同样的警告。显然,尽管您尝试推动的第二个头已关闭,但在推动期间它被视为另一个头。并且关闭两个头似乎也不是 pushable

您可以强制推送,应该没问题,但是如果您在 visualization 分支上保留多个头,您最终可能会遇到相同的问题,就像您已经使用变更集 14 和 20 一样。解决问题一次并总之,我建议合并两个变更集(14 和 20)并重新关闭最终的头部。

【讨论】:

  • 合并 14 和 20,这就是我在 21 上所做的,它仍然给出了相同的信息。
  • 不,你没有。 21 是 visualizationdefault 中的合并,而不是 visualizationvisualization 中的合并。当我的意思是合并 14 和 20 时,它不是针对 14 的后代和变更集 20...
  • 好的,所以将visualization 的两个头合并到default 仍然让我在那个分支中有两个头。现在说得通了……谢谢。
【解决方案3】:

感谢您的回答,我确实学到了一些新技巧。

我最终做的是从 remote 存储库中克隆一个早期修订版,也就是说,一个没有我的合并等所有提交的存储库。然后我提取了更改-集、合并和提交。然后推终于成功了。

这与我之前尝试执行的步骤基本相同,但显然在第一次(不成功的)试验中,我将其分解为比需要更多的步骤,并且在某些时候出现了问题。

【讨论】:

    【解决方案4】:

    试试这个解决方案,

    假设。您有足够的权限在远程关闭和创建分支

    发生这种情况是因为您试图重写历史记录。试试hg push -f,它将在远程仓库中创建两个头,你可能不会

    所以第一次登录到您的远程并关闭分支,现在来到您的本地并使用hg push -f 推送。必要的新分支将按照原来的条件自动创建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2015-08-14
      • 2013-08-18
      • 1970-01-01
      • 2011-05-05
      相关资源
      最近更新 更多