Both hg revert and hg backout revert changes made by a former revision. What is the difference between the two?
Asked
Active
Viewed 6,924 times
1 Answers
38
Given the history of changesets:
A --- B --- C --- D --- E
[bad] (*)
hg revert -r B: Stay at current revision, but update the working directory
as of revision B. It has the effect of a patch that revokes the changes
of C, D and E.
hg backout -r C: Update the working directory so that it contains the merge
of revision C's parent (B) and the current revision, preserving the changes
made in between the two revisions (working dir still contains changes of
revision D and E). This has the effect of a patch applied on E,
undoing the changes of only C.
You may want to edit some files if not all of C was bad. Remember to do
a hg commit in any case:
A --- B --- C --- D --- E --- F
[bad] (*)
Iodnas
- 3,414
- 24
- 26
-
6Answering my own question as I couldn't find anything clear on web. Hopefully this helps others now to save some time. – Iodnas Dec 07 '12 at 12:29
-
Nice answer! My "[cheat sheet](http://stackoverflow.com/a/2565996/110204)" explains the difference between `hg update` and `hg revert`, which might helpful as well. – Martin Geisler Dec 07 '12 at 16:18