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

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

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

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.

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
