'\" t .\" Title: git-cherry-pick .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 11/27/2023 .\" Manual: Git Manual .\" Source: Git 2.43.0 .\" Language: English .\" .TH "GIT\-CHERRY\-PICK" "1" "11/27/2023" "Git 2\&.43\&.0" "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