Pushing to remote repository after merge "creates new remote heads" - is that bad?
I
initialized
a Mercurial project onMachine A
,committed
my changes anduploaded
them to a remote repository.Then I
cloned
that repository onMachine B
,committed
some additional changes anduploaded
them to the same remote repository.
In both cases, I uploaded the changes with the same command:
hg push https://username:password@domain/user/repository/
Now I'm back on Machine A and I've pull
ed from the remote repository and merg
ed any changes between the two changesets using the KDiff3
GUI tool using the commands:
hg pull
hg merge
hg commit
However, when I try to push the latest changes from Machine A back to the remote repository after this pull and merge, I get this message:
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)
Why does it say "did you forget to merge"? -- I completed the merge.
Is it bad to force the push and create "new remote heads"?
If so, how do I avoid this?
UPDATE:
I ran "hg merge
" again and got this output:
5 files updated, 1 files merged, 0 files removed, 1 files开发者_Go百科 unresolved
use 'hg resolve' to retry unresolved file merges or 'hg up --clean' to abandon
So I ran 'hg up --clean
' and it reported:
6 files updated, 0 files merged, 1 files removed, 0 files unresolved
Now when I type 'hg heads
', it says:
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
You ran hg up --clean
. That means you undid the merge, which means you still need to merge. You have an unresolved file when you merge. Re-read your error message:
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
You need to resolve the merge conflict and then complete the merge with hg resolve
. Then you will have successfully merged your two heads.
And to answer your question: no, it's not bad to have two remote heads. It just means you need to merge them (preferably ASAP) before you push anything else to the remote server.
So to fix, just run hg merge
, resolve the one conflict, then run hg resolve
.
First: View your changes with hg log
.
The following didn't help in my case:
hg pull
andhg merge
(before you pull check against hg incoming)- or:
hg pull --rebase
But this helped.
hg merge [revision]
I found that I needed to explicitly merge some revisions which looked like heads.
精彩评论