hg backout

reverse effect of earlier changeset



hg backout [OPTION]... [-r] REV


Prepare a new changeset with the effect of REV undone in the current working directory. If no conflicts were encountered, it will be committed immediately.

If REV is the parent of the working directory, then this new changeset is committed automatically (unless --no-commit is specified).


hg backout cannot be used to fix either an unwanted or incorrect merge.


  • Reverse the effect of the parent of the working directory. This backout will be committed immediately:

    hg backout -r .
  • Reverse the effect of previous bad revision 23:

    hg backout -r 23
  • Reverse the effect of previous bad revision 23 and leave changes uncommitted:

    hg backout -r 23 --no-commit
    hg commit -m "Backout revision 23"

By default, the pending changeset will have one parent, maintaining a linear history. With --merge, the pending changeset will instead have two parents: the old parent of the working directory and a new child of REV that simply undoes REV.

Before version 1.7, the behavior without --merge was equivalent to specifying --merge followed by hg update --clean . to cancel the merge and leave the child of REV as a head to be merged separately.

See hg help dates for a list of formats valid for -d/--date.

See hg help revert for a way to restore files to the state of another revision.

Returns 0 on success, 1 if nothing to backout or there are unresolved files.


--merge merge with old dirstate parent after backout
--commit commit if no conflicts were encountered (DEPRECATED)
--no-commit do not commit
--parent <REV> parent to choose when backing out merge (DEPRECATED)
-r, --rev <REV>
 revision to backout
-e, --edit invoke editor on commit messages
-t, --tool <TOOL>
 specify merge tool
-I, --include <PATTERN[+]>
 include names matching the given patterns
-X, --exclude <PATTERN[+]>
 exclude names matching the given patterns
-m, --message <TEXT>
 use text as commit message
-l, --logfile <FILE>
 read commit message from file
-d, --date <DATE>
 record the specified date as commit date
-u, --user <USER>
 record the specified user as committer

[+] marked option can be specified multiple times