合并后推送到远程存储库"创建新的远程磁头" - 是不是很糟糕?

egg*_*rop 15 merge mercurial push repository

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

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

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

hg push https://username:password@domain/user/repository/
Run Code Online (Sandbox Code Playgroud)

现在我回到了机器A,我pull从远程存储库开始,merg使用**KDiff3 GUI工具使用命令****两个变更集之间的任何变化:

hg pull
hg merge
hg commit
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在此拉取和合并之后将最新的更改从机器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)
Run Code Online (Sandbox Code Playgroud)

为什么会说"你忘了合并"? - 我完成了合并.

强迫推动并创造"新的遥控头"是不是很糟糕?

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

更新:

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
Run Code Online (Sandbox Code Playgroud)

所以我跑了' hg up --clean'并报道:

6 files updated, 0 files merged, 1 files removed, 0 files unresolved
Run Code Online (Sandbox Code Playgroud)

现在当我输入' 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
Run Code Online (Sandbox Code Playgroud)

Mar*_*c W 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
Run Code Online (Sandbox Code Playgroud)

您需要解决合并冲突,然后完成合并hg resolve.然后你将成功合并你的两个脑袋.

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

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