Pushing to remote repository after merge "creates new remote heads" - is that bad?
Solution 1
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
.
Solution 2
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.
eggdrop
Updated on April 23, 2020Comments
-
eggdrop about 4 years
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 andmerg
ed any changes between the two changesets using theKDiff3
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 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