git-revert(1)
=============

NAME
----
git-revert - Revert some existing commits

SYNOPSIS
--------
[verse]
'git revert' [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>...
'git revert' --continue
'git revert' --quit
'git revert' --abort

DESCRIPTION
-----------

Given one or more existing commits, revert the changes that the
related patches introduce, and record some new commits that record
them.  This requires your working tree to be clean (no modifications
from the HEAD commit).

Note: 'git revert' is used to record some new commits to reverse the
effect of some earlier commits (often only a faulty one).  If you want to
throw away all uncommitted changes in your working directory, you
should see linkgit:git-reset[1], particularly the '--hard' option.  If
you want to extract specific files as they were in another commit, you
should see linkgit:git-checkout[1], specifically the `git checkout
<commit> \-- <filename>` syntax.  Take care with these alternatives as
both will discard uncommitted changes in your working directory.

OPTIONS
-------
<commit>...::
	Commits to revert.
	For a more complete list of ways to spell commit names, see
	linkgit:gitrevisions[7].
	Sets of commits can also be given but no traversal is done by
	default, see linkgit:git-rev-list[1] and its '--no-walk'
	option.

-e::
--edit::
	With this option, 'git revert' will let you edit the commit
	message prior to committing the revert. This is the default if
	you run the command from a terminal.

-m parent-number::
--mainline parent-number::
	Usually you cannot revert a merge because you do not know which
	side of the merge should be considered the mainline.  This
	option specifies the parent number (starting from 1) of
	the mainline and allows revert to reverse the change
	relative to the specified parent.
+
Reverting a merge commit declares that you will never want the tree changes
brought in by the merge.  As a result, later merges will only bring in tree
changes introduced by commits that are not ancestors of the previously
reverted merge.  This may or may not be what you want.
+
See the link:howto/revert-a-faulty-merge.txt[revert-a-faulty-merge How-To] for
more details.

--no-edit::
	With this option, 'git revert' will not start the commit
	message editor.

-n::
--no-commit::
	Usually the command automatically creates some commits with
	commit log messages stating which commits were
	reverted.  This flag applies the changes necessary
	to revert the named commits to your working tree
	and the index, but does not make the commits.  In addition,
	when this option is used, your index does not have to match
	the HEAD commit.  The revert is done against the
	beginning state of your index.
+
This is useful when reverting more than one commits'
effect to your index in a row.

-s::
--signoff::
	Add Signed-off-by line at the end of the commit message.

--strategy=<strategy>::
	Use the given merge strategy.  Should only be used once.
	See the MERGE STRATEGIES section in linkgit:git-merge[1]
	for details.

-X<option>::
--strategy-option=<option>::
	Pass the merge strategy-specific option through to the
	merge strategy.  See linkgit:git-merge[1] for details.

SEQUENCER SUBCOMMANDS
---------------------
include::sequencer.txt[]

EXAMPLES
--------
`git revert HEAD~3`::

	Revert the changes specified by the fourth last commit in HEAD
	and create a new commit with the reverted changes.

`git revert -n master{tilde}5..master{tilde}2`::

	Revert the changes done by commits from the fifth last commit
	in master (included) to the third last commit in master
	(included), but do not create any commit with the reverted
	changes. The revert only modifies the working tree and the
	index.

SEE ALSO
--------
linkgit:git-cherry-pick[1]

GIT
---
Part of the linkgit:git[1] suite
