15
  1. initialized是一个 Mercurial 项目Machine Acommitted我的更改和uploaded它们到远程存储库。

  2. 然后我cloned在那个存储库上Machine Bcommitted一些额外的更改和uploaded它们到同一个远程存储库。

在这两种情况下,我都使用相同的命令上传了更改:

hg push https://username:password@domain/user/repository/

现在我回到了机器 A,我已经pull从远程存储库中编辑了,并使用GUI 工具使用以下命令merg编辑了两个变更集之间的任何更改:KDiff3

hg pull
hg merge
hg commit

但是,当我尝试在此拉取和合并之后将最新更改从机器 A 推送回远程存储库时,我收到以下消息:

hg push https://username:password@domain/user/repository/
pushing to https://username:password@domain/user/repository/
searching for changes
abort: push creates new remote heads!
(did you forget to merge? use push -f to force)

为什么它说“你忘了合并”?-- 我完成了合并。

强制推送并创建“新的远程头”是不是很糟糕?

如果是这样,我该如何避免这种情况?


更新:

hg merge再次运行“”并得到以下输出:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

所以我跑了' hg up --clean'它报告:

6 files updated, 0 files merged, 1 files removed, 0 files unresolved

现在当我输入' hg heads'时,它会说:

changeset:   11
tag:         tip
parent:      9
user:        eggdrop
date:        Tue Oct 20 16:27:44 2009 -0400
summary:     Machine A after merge

changeset:   10
parent:      7
user:        chickensoup
date:        Thu Oct 15 03:27:23 2009 -0400
summary:     Machine B changes to be pulled onto Machine A
4

2 回答 2

9

你跑了hg up --clean。这意味着您撤消了合并,这意味着您仍然需要合并。合并时有一个未解析的文件。重新阅读您的错误消息:

5 files updated, 1 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon

您需要解决合并冲突,然后使用hg resolve. 然后您将成功合并您的两个头。

并回答您的问题:不,拥有两个遥控头也不错。这只是意味着您需要在将其他任何内容推送到远程服务器之前合并它们(最好尽快)。

所以要修复,只需运行hg merge,解决一个冲突,然后运行hg resolve

于 2009-10-20T22:04:30.073 回答
2

第一:查看您的更改hg log。以下对我的情况没有帮助:

  • hg pullhg merge(在您对 hg 传入进行检查之前)
  • 或者:hg pull --rebase

但这有帮助。

hg merge [revision]

我发现我需要明确合并一些看起来像头的修订。

于 2010-07-21T19:02:23.780 回答