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

Helder S Ribeiro picture Helder S Ribeiro · Apr 20, 2010 · Viewed 57.1k times · Source

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?

Answer

Ry4an Brase picture Ry4an Brase · Apr 20, 2010

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)