HG: Undo a commit from history

26,688

Solution 1

You want hg backout

Revert/undo the effect of an earlier changeset...

Backout works by applying a changeset that's the opposite of the changeset to be backed out. That new changeset is committed to the repository, and eventually merged...

Solution 2

You can use the MQ extension:

hg qinit
hg qimport -r 4:tip
hg qpop -a
hg qdelete 4.diff
hg qpush -a
hg qfinish -a

The above is how you rewrite history, which is what you want I believe.

You can also use hg backout but that undoes a commit in your working directory and you can commit that.

Share:
26,688
Donn Felker
Author by

Donn Felker

Software Developer. Fitness enthusiast. SaaS Developer Freelancing and Consulting mentor. Author of the 9 hour Kotlin Course: https://www.youtube.com/watch?v=wuiT4T_LJQo Co-Host of the Fragmented Podcast Writing about the software business here: https://donnfelker.com Author of ... Android Application Development For Dummies (v1 & v2) Android Tablet Application Development for Dummies Contributor to Android Development Tools

Updated on February 23, 2020

Comments

  • Donn Felker
    Donn Felker over 4 years

    I have a HG repository with revs 1, 2, 3, 4, 5 and 6.

    When I committed rev 4, I unknowingly botched some changes in rev3 that I should not have. I did not notice this until rev 6 was already committed.

    I need to undo changes in rev 4, but then re-apply all other changes after that. Basically undoing commit #4. How can I do that?