【问题标题】:Push creates new remote heads! (did you forget to merge? use push -f to force)Push 创建新的远程头! (你忘记合并了吗?使用 push -f 强制)
【发布时间】:2013-09-14 11:32:18
【问题描述】:

好吧,我在谷歌上搜索了一下,但找不到解决方案,因为我偶然发现了相同的信息,但人们得到它的方式不同。我是 mecurial 的新手,想确保我做的正确。

所以我收到了上述错误消息。我有一个开发站点和一个实时站点,我正在尝试将代码推送到代码库。

但是昨天我不小心做了hg add,它添加了所有我不想做的媒体。在从代码库中删除所有媒体文件之后,我确实恢复了,然后提交并推送更改。所以今天我一直在对 CSS 文件和一些模板进行更改。我已经提交我的更改并推送它们,但是当我运行 hg push 时,我得到了上面的错误。

我已经运行 hg log 并且只有 6 次提交,因为它是一个干净/新的分支/项目。任何帮助将不胜感激,如果我没有正确解释任何事情,我深表歉意!

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    如果您使用 Workbench 推送更改,您可以先尝试检测传出更改,请参阅附件图片

    这将为您提供有关您将要推送的内容的信息。 我的问题是,我有一个旧的draft 等待推送。在旧草稿上完成 strip 后,我就可以继续推送了。

    【讨论】:

    • 您也可以简单地将存储库过滤到draft()(以“草稿”状态显示修订)。 (这不是 100% 可靠的,如果你做了一些花哨的事情,比如更改修订状态或拉/推到不同的存储库,但在正常情况下它会起作用。)
    【解决方案2】:

    在 TortoiseHg 你可以这样做:

    1 => 提交你的文件

    2 => 去做你想要推送代码的新分支

    3 => 在这个分支上,运行 Merge with develop

    4 => 无错误推送您的代码!

    【讨论】:

      【解决方案3】:

      这对我有用。

      hg push -f
      

      更多命令,请尝试

      hg help push
      

      【讨论】:

      • 添加“force”标志并不是真正的“解决方案”,就像“创建新的远程头”是错误一样。
      • 这是一个解决方案,但前提是您知道自己在做什么。例如,当您关闭一个分支并想要重新启动该分支(不合并,覆盖已关闭分支的任何更改,但名称相同)时,--force 可能就是您想要的。这里的关键是知道你在做什么,否则不要使用--force(这应该是你的默认值)。
      【解决方案4】:

      如果您想取消有冲突的更改

      hg outgoing
      

      您应该看到包含未推送的已提交/冲突更改的行。搜索变更集修订。这里64

      searching for changes
      changeset:   64:1830948c246e
      

      然后

      hg strip 64
      

      【讨论】:

        【解决方案5】:

        这不是“错误”消息;这是一个完全正常的情况。那条消息是说“嘿,当你在做你的工作时,其他人将新工作推到了那个存储库,你可能应该将他们的工作整合到你的,这样他们就不必将你的整合到他们的工作中了吗?”

        所以先做一个:

        hg pull
        

        然后是:

        hg merge
        

        顺便说一句,如果您实际使用了hg revert 命令,您所做的revert 并没有从历史记录中删除这些文件,因此您的历史记录可能相当大。

        考虑阅读Mercurial book 的前几章,它很好地涵盖了这些情况。

        【讨论】:

        • 一种合理的情况是,如果您需要基于非常特定的旧版本创建补丁。然后,您可以稍后将该补丁合并到您的主开发分支中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-12
        • 2014-09-06
        • 2014-03-13
        • 2013-04-13
        相关资源
        最近更新 更多