git-cherry-pick(1)
==================

NAME
----
git-cherry-pick - Apply the changes introduced by some existing commits

SYNOPSIS
--------
[verse]
'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff]
		  [-S[<keyid>]] <commit>...
'git cherry-pick' (--continue | --skip | --abort | --quit)

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

Given one or more existing commits, apply the change each one
introduces, recording a new commit for each.  This requires your
working tree to be clean (no modifications from the HEAD commit).

When it is not obvious how to apply a change, the following
happens:

1. The current branch and `HEAD` pointer stay at the last commit
   successfully made.
2. The `CHERRY_PICK_HEAD` ref is set to point at the commit that
   introduced the change that is difficult to apply.
3. Paths in which the change applied cleanly are updated both
   in the index file and in your working tree.
4. For conflicting paths, the index file records up to three
   versions, as described in the "TRUE MERGE" section of
   linkgit:git-merge[1].  The working tree files will include
   a description of the conflict bracketed by the usual
   conflict markers `<<<<<<<` and `>>>>>>>`.
5. No other modifications are made.

See linkgit:git-merge[1] for some hints on resolving such
conflicts.

OPTIONS
-------
<commit>...::
	Commits to cherry-pick.
	For a more complete list of ways to spell commits, see
	linkgit:gitrevisions[7].
	Sets of commits can be passed but no traversal is done by
	default, as if the `--no-walk` option was specified, see
	linkgit:git-rev-list[1]. Note that specifying a range will
	feed all <commit>... arguments to a single revision walk
	(see a later example that uses 'maint master..next').

-e::
--edit::
	With this option, 'git cherry-pick' will let you edit the commit
	message prior to committing.

--cleanup=<mode>::
	This option determines how the commit message will be cleaned up before
	being passed on to the commit machinery. See linkgit:git-commit[1] for more
	details. In particular, if the '<mode>' is given a value of `scissors`,
	scissors will be appended to `MERGE_MSG` before being passed on in the case
	of a conflict.

-x::
	When recording the commit, append a line that says
	"(cherry picked from commit ...)" to the original commit
	message in order to indicate which commit this change was
	cherry-picked from.  This is done only for cherry
	picks without conflicts.  Do not use this option if
	you are cherry-picking from your private branch because
	the information is useless to the recipient.  If on the
	other hand you are cherry-picking between two publicly
	visible branches (e.g. backporting a fix to a
	maintenance branch for an older release from a
	development branch), adding this information can be
	useful.

-r::
	It used to be that the command defaulted to do `-x`
	described above, and `-r` was to disable it.  Now the
	default is not to do `-x` so this option is a no-op.

-m parent-number::
--mainline parent-number::
	Usually you cannot cherry-pick 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 cherry-pick to replay the change
	relative to the specified parent.

-n::
--no-commit::
	Usually the command automatically creates a sequence of commits.
	This flag applies the changes necessary to cherry-pick
	each named commit to your working tree and the index,
	without making any commit.  In addition, when this
	option is used, your index does not have to match the
	HEAD commit.  The cherry-pick is done against the
	beginning state of your index.
+
This is useful when cherry-picking 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.
	See the signoff option in linkgit:git-commit[1] for more information.

-S[<keyid>]::
--gpg-sign[=<keyid>]::
--no-gpg-sign::
	GPG-sign commits. The `keyid` argument is optional and
	defaults to the committer identity; if specified, it must be
	stuck to the option without a space. `--no-gpg-sign` is useful to
	countermand both `commit.gpgSign` configuration variable, and
	earlier `--gpg-sign`.

--ff::
	If the current HEAD is the same as the parent of the
	cherry-pick'ed commit, then a fast forward to this commit will
	be performed.

--allow-empty::
	By default, cherry-picking an empty commit will fail,
	indicating that an explicit invocation of `git commit
	--allow-empty` is required. This option overrides that
	behavior, allowing empty commits to be preserved automatically
	in a cherry-pick. Note that when "--ff" is in effect, empty
	commits that meet the "fast-forward" requirement will be kept
	even without this option.  Note also, that use of this option only
	keeps commits that were initially empty (i.e. the commit recorded the
	same tree as its parent).  Commits which are made empty due to a
	previous commit are dropped.  To force the inclusion of those commits
	use `--keep-redundant-commits`.

--allow-empty-message::
	By default, cherry-picking a commit with an empty message will fail.
	This option overrides that behavior, allowing commits with empty
	messages to be cherry picked.

--keep-redundant-commits::
	If a commit being cherry picked duplicates a commit already in the
	current history, it will become empty.  By default these
	redundant commits cause `cherry-pick` to stop so the user can
	examine the commit. This option overrides that behavior and
	creates an empty commit object.  Implies `--allow-empty`.

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

--rerere-autoupdate::
--no-rerere-autoupdate::
	Allow the rerere mechanism to update the index with the
	result of auto-conflict resolution if possible.

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

EXAMPLES
--------
`git cherry-pick master`::

	Apply the change introduced by the commit at the tip of the
	master branch and create a new commit with this change.

`git cherry-pick ..master`::
`git cherry-pick ^HEAD master`::

	Apply the changes introduced by all commits that are ancestors
	of master but not of HEAD to produce new commits.

`git cherry-pick maint next ^master`::
`git cherry-pick maint master..next`::

	Apply the changes introduced by all commits that are
	ancestors of maint or next, but not master or any of its
	ancestors.  Note that the latter does not mean `maint` and
	everything between `master` and `next`; specifically,
	`maint` will not be used if it is included in `master`.

`git cherry-pick master~4 master~2`::

	Apply the changes introduced by the fifth and third last
	commits pointed to by master and create 2 new commits with
	these changes.

`git cherry-pick -n master~1 next`::

	Apply to the working tree and the index the changes introduced
	by the second last commit pointed to by master and by the last
	commit pointed to by next, but do not create any commit with
	these changes.

`git cherry-pick --ff ..next`::

	If history is linear and HEAD is an ancestor of next, update
	the working tree and advance the HEAD pointer to match next.
	Otherwise, apply the changes introduced by those commits that
	are in next but not HEAD to the current branch, creating a new
	commit for each new change.

`git rev-list --reverse master -- README | git cherry-pick -n --stdin`::

	Apply the changes introduced by all commits on the master
	branch that touched README to the working tree and index,
	so the result can be inspected and made into a single new
	commit if suitable.

The following sequence attempts to backport a patch, bails out because
the code the patch applies to has changed too much, and then tries
again, this time exercising more care about matching up context lines.

------------
$ git cherry-pick topic^             <1>
$ git diff                           <2>
$ git reset --merge ORIG_HEAD        <3>
$ git cherry-pick -Xpatience topic^  <4>
------------
<1> apply the change that would be shown by `git show topic^`.
    In this example, the patch does not apply cleanly, so
    information about the conflict is written to the index and
    working tree and no new commit results.
<2> summarize changes to be reconciled
<3> cancel the cherry-pick.  In other words, return to the
    pre-cherry-pick state, preserving any local modifications
    you had in the working tree.
<4> try to apply the change introduced by `topic^` again,
    spending extra time to avoid mistakes based on incorrectly
    matching context lines.

SEE ALSO
--------
linkgit:git-revert[1]

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