Pushing to remote repository after merge “creates new remote heads” - is that bad?

大城市里の小女人 提交于 2019-12-03 11:39:37

问题


  1. I initialized a Mercurial project on Machine A, committed my changes and uploaded them to a remote repository.

  2. Then I cloned that repository on Machine B, committed some additional changes and uploaded 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 pulled from the remote repository and merged 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 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

回答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.




回答2:


First: View your changes with hg log. The following didn't help in my case:

  • hg pull and hg 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.



来源:https://stackoverflow.com/questions/1597273/pushing-to-remote-repository-after-merge-creates-new-remote-heads-is-that-ba

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!