'\" t
.\" Title: git-cherry-pick
.\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot
.\" Date: 01/13/2023
.\" Manual: Git Manual
.\" Source: Git 2.39.1
.\" Language: English
.\"
.TH "GIT\-CHERRY\-PICK" "1" "01/13/2023" "Git 2\&.39\&.1" "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 ] [\-s] [\-x] [\-\-ff]
[\-S[]] \&...
\fIgit cherry\-pick\fR (\-\-continue | \-\-skip | \-\-abort | \-\-quit)
.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
\&...
.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 \&... 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
\-\-cleanup=
.RS 4
This option determines how the commit message will be cleaned up before being passed on to the commit machinery\&. See
\fBgit-commit\fR(1)
for more details\&. In particular, if the
\fI\fR
is given a value of
\fBscissors\fR, scissors will be appended to
\fBMERGE_MSG\fR
before being passed on in the case of a conflict\&.
.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 , \-\-mainline
.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 a
\fBSigned\-off\-by\fR
trailer at the end of the commit message\&. See the signoff option in
\fBgit-commit\fR(1)
for more information\&.
.RE
.PP
\-S[], \-\-gpg\-sign[=], \-\-no\-gpg\-sign
.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\&.
\fB\-\-no\-gpg\-sign\fR
is useful to countermand both
\fBcommit\&.gpgSign\fR
configuration variable, and earlier
\fB\-\-gpg\-sign\fR\&.
.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=
.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