# hg backout

## reverse effect of earlier changeset

Contents

- Synopsis
- Description
- Options

# Synopsis

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

# Description

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).

Note

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

Examples:

- 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.

# Options

`--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