initialized
关于 的 Mercurial 项目Machine A
, 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
但是,当我尝试在此拉取和 merge 后将机器 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)
为什么说“你忘记 merge 了”? ——我完成了 merge 。
强制推送并创建“新的远程头”是否不好?
如果是这样,我该如何避免这种情况?
更新:
我再次运行“
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
最佳答案
你跑了hg up --clean
.这意味着您取消了 merge ,这意味着您仍然需要 merge 。 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
您需要解决 merge 冲突,然后使用
hg resolve
完成 merge 。 .然后你就成功地 merge 了你的两个头。并回答您的问题:不,有两个远程头也不错。这只是意味着您需要在将其他任何内容推送到远程服务器之前 merge 它们(最好尽快)。
所以要修复,只需运行
hg merge
,解决一个冲突,然后运行 hg resolve
.
关于mercurial - merge "creates new remote heads"后推送到远程存储库 - 是不是很糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1597273/