How to abort a merge in mercurial?

Version ControlMercurialMergeDvcsUndo

Version Control Problem Overview


I goofed up a merge. I'd like to revert then try again.
Is there a way to revert a merge before it is committed?

hg revert doesn't do what I'd like, it only reverts the text of the files. Mercurial aborts my second attempt at merging and complains original merge is still uncommitted.

Is there a way to undo a merge after an hg merge command but before it's committed?

Version Control Solutions


Solution 1 - Version Control

hg update -C <one of the two merge changesets>

Solution 2 - Version Control

After you do hg merge, but before hg commit, your working copy has two parents: the first parent is the changeset you had updated to before the merge and the second parent is the changeset you are merging with. Mercurial will not let you do hg merge again as long as your working copy has two parents.

You have two options on how to proceed:

  1. If you want to abort the merge and get back to where you started, then do

     hg update -C .
    

    This will update the working copy to match the first parent: the . always denotes the first parent of the working copy.

  2. If you want to re-merge some files then do

     hg resolve fileA fileB
    

    This will re-launch the merge tools just as when you did hg merge. The resolve command is good if you find out at hg merge-time that your merge tools are configured badly: fix the configuration and run hg resolve --all. You can run hg resolve as many times as you want until you are satisfied with the merge.

Solution 3 - Version Control

Today there is hg merge --abort. See hg help merge.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questiondeft_codeView Question on Stackoverflow
Solution 1 - Version ControlOmnifariousView Answer on Stackoverflow
Solution 2 - Version ControlMartin GeislerView Answer on Stackoverflow
Solution 3 - Version ControlmljrgView Answer on Stackoverflow