我initialized
一个关于 Machine A
的Mercurial项目,committed
我的更改以及uploaded
他们到远程存储库。
然后我cloned
Machine B
上的存储库,committed
一些其他更改以及uploaded
他们到同一个远程存储库。
在这两种情况下,我都使用相同的命令上传了更改:
hg push https://username:password@domain/user/repository/
现在我回到了机器A,我从远程存储库pull
编辑了merg
使用KDiff3
GUI工具使用命令在两个变更集之间进行了任何更改:
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
答案 0 :(得分: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
的合并。然后你就会成功合并你的两个脑袋。
并回答你的问题:不,有两个远程脑袋不是坏。它只是意味着你需要在将任何其他内容推送到远程服务器之前合并它们(最好是ASAP)。
所以要修复,只需运行hg merge
,解决一个冲突,然后运行hg resolve
。
答案 1 :(得分:2)
首先:使用hg log
查看您的更改。
以下对我的案例没有帮助:
hg pull
和hg merge
(在您检查hg传入之前)hg pull --rebase
但这有帮助。
hg merge [revision]
我发现我需要明确合并一些看似头像的修订版。