推创建新的远程头!(您是否忘记合并?使用push -f强制)


73

好的,我有一个小小的google,找不到解决方案,因为我偶然发现了相同的消息,但人们得到消息的方式不同。我是Mercurial的新手,并且想要确保自己做的正确。

所以我收到上面的错误信息。我有一个开发站点和一个在线站点,我正在尝试将代码推送到代码库。

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

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

Answers:


69

这不是“错误”消息;这是完全正常的情况。该消息说:“嘿,其他人在您执行工作时将新工作推送到该存储库,您可能应该将他们的工作集成到您的工作中,这样他们就不必将您的工作集成到他们的工作中了吗?”

所以先做一个:

hg pull

然后一个:

hg merge

顺便说一下,revert如果您实际使用了该hg revert命令,您所做的操作并未从历史记录中删除这些文件,因此您的历史记录可能很大。

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


1
合理的情况是,您是否需要基于非常特定的旧版本创建补丁。然后,您可以稍后将该补丁合并到您的主要dev分支中。
AnthonyVO '18年

19

如果您想取消冲突的更改

hg outgoing

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

searching for changes
changeset:   64:1830948c246e

然后

hg strip 64

15

这对我有用。

hg push -f

有关更多命令,请尝试

hg help push

13
添加“力”标志是不是一个真正的“解决方案”任何超过“创建新的远程头”是一个错误..
凯斯Jard

7
这是一个解决方案,但前提是您知道自己在做什么。例如,当您关闭分支并想重新启动分支(不进行合并,覆盖已关闭分支的任何更改,但使用相同名称)时,则--force可能正是您想要的。这里的关键是要知道您在做什么,否则请不要使用--force(这应该是您的默认设置)。
亚伯

1

在TortoiseHg上,您可以执行以下操作:

1 =>提交文件

2 =>转到您要在其中推送代码的新分支

3 =>在此分支上,运行与development合并

4 =>在没有错误的情况下推送代码!


0

如果您使用工作台推送更改,则可以先尝试检测出局更改,请参阅附件中的图像。

enter image description here

这将为您提供有关您要推动什么的信息。我的问题是,我有一个draft待解决的老问题。一旦完成strip了旧草稿,我就可以继续推进。


1
您还可以简单地过滤存储库以draft()(以“草稿”状态显示修订)。(这不是100%可靠的,如果您喜欢更改版本状态或将其拉入/推入其他存储库,但是在正常情况下,它会起作用。)
Mike Rosoft
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.