'\" t
.\"     Title: git-cherry-pick
.\"    Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 12/01/2018
.\"    Manual: Git Manual
.\"    Source: Git 2.20.0.rc2
.\"  Language: English
.\"
.TH "GIT\-CHERRY\-PICK" "1" "12/01/2018" "Git 2\&.20\&.0\&.rc2" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
git-cherry-pick \- Apply the changes introduced by some existing commits
.SH "SYNOPSIS"
.sp
.nf
\fIgit cherry\-pick\fR [\-\-edit] [\-n] [\-m parent\-number] [\-s] [\-x] [\-\-ff]
                  [\-S[<keyid>]] <commit>\&...
\fIgit cherry\-pick\fR \-\-continue
\fIgit cherry\-pick\fR \-\-quit
\fIgit cherry\-pick\fR \-\-abort
.fi
.sp
.SH "DESCRIPTION"
.sp
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)\&.
.sp
When it is not obvious how to apply a change, the following happens:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
The current branch and
\fBHEAD\fR
pointer stay at the last commit successfully made\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
The
\fBCHERRY_PICK_HEAD\fR
ref is set to point at the commit that introduced the change that is difficult to apply\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
Paths in which the change applied cleanly are updated both in the index file and in your working tree\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
For conflicting paths, the index file records up to three versions, as described in the "TRUE MERGE" section of
\fBgit-merge\fR(1)\&. The working tree files will include a description of the conflict bracketed by the usual conflict markers
\fB<<<<<<<\fR
and
\fB>>>>>>>\fR\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 5.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  5." 4.2
.\}
No other modifications are made\&.
.RE
.sp
See \fBgit-merge\fR(1) for some hints on resolving such conflicts\&.
.SH "OPTIONS"
.PP
<commit>\&...
.RS 4
Commits to cherry\-pick\&. For a more complete list of ways to spell commits, see
\fBgitrevisions\fR(7)\&. Sets of commits can be passed but no traversal is done by default, as if the
\fB\-\-no\-walk\fR
option was specified, see
\fBgit-rev-list\fR(1)\&. Note that specifying a range will feed all <commit>\&... arguments to a single revision walk (see a later example that uses
\fImaint master\&.\&.next\fR)\&.
.RE
.PP
\-e, \-\-edit
.RS 4
With this option,
\fIgit cherry\-pick\fR
will let you edit the commit message prior to committing\&.
.RE
.PP
\-x
.RS 4
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\&.
.RE
.PP
\-r
.RS 4
It used to be that the command defaulted to do
\fB\-x\fR
described above, and
\fB\-r\fR
was to disable it\&. Now the default is not to do
\fB\-x\fR
so this option is a no\-op\&.
.RE
.PP
\-m parent\-number, \-\-mainline parent\-number
.RS 4
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\&.
.RE
.PP
\-n, \-\-no\-commit
.RS 4
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\&.
.sp
This is useful when cherry\-picking more than one commits\(aq effect to your index in a row\&.
.RE
.PP
\-s, \-\-signoff
.RS 4
Add Signed\-off\-by line at the end of the commit message\&. See the signoff option in
\fBgit-commit\fR(1)
for more information\&.
.RE
.PP
\-S[<keyid>], \-\-gpg\-sign[=<keyid>]
.RS 4
GPG\-sign commits\&. The
\fBkeyid\fR
argument is optional and defaults to the committer identity; if specified, it must be stuck to the option without a space\&.
.RE
.PP
\-\-ff
.RS 4
If the current HEAD is the same as the parent of the cherry\-pick\(cqed commit, then a fast forward to this commit will be performed\&.
.RE
.PP
\-\-allow\-empty
.RS 4
By default, cherry\-picking an empty commit will fail, indicating that an explicit invocation of
\fBgit commit \-\-allow\-empty\fR
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
\fB\-\-keep\-redundant\-commits\fR\&.
.RE
.PP
\-\-allow\-empty\-message
.RS 4
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\&.
.RE
.PP
\-\-keep\-redundant\-commits
.RS 4
If a commit being cherry picked duplicates a commit already in the current history, it will become empty\&. By default these redundant commits cause
\fBcherry\-pick\fR
to stop so the user can examine the commit\&. This option overrides that behavior and creates an empty commit object\&. Implies
\fB\-\-allow\-empty\fR\&.
.RE
.PP
\-\-strategy=<strategy>
.RS 4
Use the given merge strategy\&. Should only be used once\&. See the MERGE STRATEGIES section in
\fBgit-merge\fR(1)
for details\&.
.RE
.PP
\-X<option>, \-\-strategy\-option=<option>
.RS 4
Pass the merge strategy\-specific option through to the merge strategy\&. See
\fBgit-merge\fR(1)
for details\&.
.RE
.SH "SEQUENCER SUBCOMMANDS"
.PP
\-\-continue
.RS 4
Continue the operation in progress using the information in
\fI\&.git/sequencer\fR\&. Can be used to continue after resolving conflicts in a failed cherry\-pick or revert\&.
.RE
.PP
\-\-quit
.RS 4
Forget about the current operation in progress\&. Can be used to clear the sequencer state after a failed cherry\-pick or revert\&.
.RE
.PP
\-\-abort
.RS 4
Cancel the operation and return to the pre\-sequence state\&.
.RE
.SH "EXAMPLES"
.PP
\fBgit cherry\-pick master\fR
.RS 4
Apply the change introduced by the commit at the tip of the master branch and create a new commit with this change\&.
.RE
.PP
\fBgit cherry\-pick \&.\&.master\fR, \fBgit cherry\-pick ^HEAD master\fR
.RS 4
Apply the changes introduced by all commits that are ancestors of master but not of HEAD to produce new commits\&.
.RE
.PP
\fBgit cherry\-pick maint next ^master\fR, \fBgit cherry\-pick maint master\&.\&.next\fR
.RS 4
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
\fBmaint\fR
and everything between
\fBmaster\fR
and
\fBnext\fR; specifically,
\fBmaint\fR
will not be used if it is included in
\fBmaster\fR\&.
.RE
.PP
\fBgit cherry\-pick master~4 master~2\fR
.RS 4
Apply the changes introduced by the fifth and third last commits pointed to by master and create 2 new commits with these changes\&.
.RE
.PP
\fBgit cherry\-pick \-n master~1 next\fR
.RS 4
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\&.
.RE
.PP
\fBgit cherry\-pick \-\-ff \&.\&.next\fR
.RS 4
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\&.
.RE
.PP
\fBgit rev\-list \-\-reverse master \-\- README | git cherry\-pick \-n \-\-stdin\fR
.RS 4
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\&.
.RE
.sp
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\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git cherry\-pick topic^             \fB(1)\fR
$ git diff                           \fB(2)\fR
$ git reset \-\-merge ORIG_HEAD        \fB(3)\fR
$ git cherry\-pick \-Xpatience topic^  \fB(4)\fR
.fi
.if n \{\
.RE
.\}
.sp
.sp
\fB1. \fRapply the change that would be shown by
\fBgit show topic^\fR\&. 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\&.
.br
\fB2. \fRsummarize changes to be reconciled
.br
\fB3. \fRcancel the cherry\-pick\&. In other words, return to the pre\-cherry\-pick state, preserving any local modifications you had in the working tree\&.
.br
\fB4. \fRtry to apply the change introduced by
\fBtopic^\fR
again, spending extra time to avoid mistakes based on incorrectly matching context lines\&.
.br
.SH "SEE ALSO"
.sp
\fBgit-revert\fR(1)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
