Mercurial: How do you undo changes?

Version ControlMercurial

Version Control Problem Overview


When using Mercurial, how do you undo all changes in the working directory since the last commit? It seems like this would be a simple thing, but it's escaping me.

For example, let's say I have 4 commits. Then, I make some changes to my code. Then I decide that my changes are bad and I just want to go back to the state of the code at my last commit. So, I think I should do:

hg update 4

with 4 being the revision # of my latest commit. But, Mercurial doesn't change any of the files in my working directory. Why not?

Version Control Solutions


Solution 1 - Version Control

hg revert will do the trick.

It will revert you to the last commit.

--all will revert all files.

See the link for the Man Page description of it.

hg update is usually used to refresh your working directory after you pull from a different repo or swap branches. hg up myawesomebranch. It also can be used to revert to a specific version. hg up -r 12.

Solution 2 - Version Control

An alternative solution to hg revert is hg update -C. You can discard your local changes and update to some revision using this single command.

I usually prefer typing hg up -C because it's shorter than hg revert --all --no-backup :)

Solution 3 - Version Control

hg revert is your friend:

hg revert --all 

hg update merges your changes to your current working copy with the target revision. Merging the latest revision with your changed files (=current working copy) results in the same changes that you already have, i.e., it does nothing :-)

If you want to read up on Mercurial, I'd recommend the very awesome tutorial Hg Init.

Solution 4 - Version Control

hg revert --all 

and then

hg pull -u 

works for me

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
QuestionJohnny BeegoodView Question on Stackoverflow
Solution 1 - Version ControlPaul NathanView Answer on Stackoverflow
Solution 2 - Version ControlAndrey VlasovskikhView Answer on Stackoverflow
Solution 3 - Version ControlpableuView Answer on Stackoverflow
Solution 4 - Version ControlChristian VielmaView Answer on Stackoverflow