gitmercurialmergedvcs

How do I git reset --hard HEAD on Mercurial?


I'm a Git user trying to use Mercurial.

Here's what happened: I did a hg backout on a changeset I wanted to revert. That created a new head, so hg instructed me to merge (back to "default", I assume). After the merge, it told me I still had to commit. Then I noticed something I did wrong when resolving a conflict in the merge, and decided I wanted to have everything as before the hg backout, that is, I want this uncommited merge to go away. On Git this uncommited stuff would be in the index and I'd just do a git reset --hard HEAD to wipe it out but, from what I've read, the index doesn't exist on Mercurial. So how do I back out from this?


Solution

  • If you've not yet commited, and it sounds like you haven't you can undo all the merge work with hg update --clean.

    However, in newer mercurial's there's a handy command to re-merge a single file: hg resolve path/to/file.ext. From the hg help resolve:

    The available actions are: ...
    
     4) discard your current attempt(s) at resolving conflicts and
    

    restart the merge from scratch: "hg resolve file..." (or "-a" for all unresolved files)