'\" t
.\"     Title: git-rebase
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 2024-05-16
.\"    Manual: Git Manual
.\"    Source: Git 2.45.1.204.gd8ab1d464d
.\"  Language: English
.\"
.TH "GIT\-REBASE" "1" "2024\-05\-16" "Git 2\&.45\&.1\&.204\&.gd8ab1d" "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-rebase \- Reapply commits on top of another base tip
.SH "SYNOPSIS"
.sp
.nf
\fIgit rebase\fR [\-i | \-\-interactive] [<options>] [\-\-exec <cmd>]
        [\-\-onto <newbase> | \-\-keep\-base] [<upstream> [<branch>]]
\fIgit rebase\fR [\-i | \-\-interactive] [<options>] [\-\-exec <cmd>] [\-\-onto <newbase>]
        \-\-root [<branch>]
\fIgit rebase\fR (\-\-continue|\-\-skip|\-\-abort|\-\-quit|\-\-edit\-todo|\-\-show\-current\-patch)
.fi
.sp
.SH "DESCRIPTION"
.sp
If \fB<branch>\fR is specified, \fBgit rebase\fR will perform an automatic \fBgit switch <branch>\fR before doing anything else\&. Otherwise it remains on the current branch\&.
.sp
If \fB<upstream>\fR is not specified, the upstream configured in \fBbranch\&.<name>\&.remote\fR and \fBbranch\&.<name>\&.merge\fR options will be used (see \fBgit-config\fR(1) for details) and the \fB\-\-fork\-point\fR option is assumed\&. If you are currently not on any branch or if the current branch does not have a configured upstream, the rebase will abort\&.
.sp
All changes made by commits in the current branch but that are not in \fB<upstream>\fR are saved to a temporary area\&. This is the same set of commits that would be shown by \fBgit log <upstream>\&.\&.HEAD\fR; or by \fBgit log \*(Aqfork_point\*(Aq\&.\&.HEAD\fR, if \fB\-\-fork\-point\fR is active (see the description on \fB\-\-fork\-point\fR below); or by \fBgit log HEAD\fR, if the \fB\-\-root\fR option is specified\&.
.sp
The current branch is reset to \fB<upstream>\fR or \fB<newbase>\fR if the \fB\-\-onto\fR option was supplied\&. This has the exact same effect as \fBgit reset \-\-hard <upstream>\fR (or \fB<newbase>\fR)\&. \fBORIG_HEAD\fR is set to point at the tip of the branch before the reset\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
\fBORIG_HEAD\fR is not guaranteed to still point to the previous branch tip at the end of the rebase if other commands that write that pseudo\-ref (e\&.g\&. \fBgit reset\fR) are used during the rebase\&. The previous branch tip, however, is accessible using the reflog of the current branch (i\&.e\&. \fB@{1}\fR, see \fBgitrevisions\fR(7))\&.
.sp .5v
.RE
.sp
The commits that were previously saved into the temporary area are then reapplied to the current branch, one by one, in order\&. Note that any commits in \fBHEAD\fR which introduce the same textual changes as a commit in \fBHEAD\&.\&.<upstream>\fR are omitted (i\&.e\&., a patch already accepted upstream with a different commit message or timestamp will be skipped)\&.
.sp
It is possible that a merge failure will prevent this process from being completely automatic\&. You will have to resolve any such merge failure and run \fBgit rebase \-\-continue\fR\&. Another option is to bypass the commit that caused the merge failure with \fBgit rebase \-\-skip\fR\&. To check out the original \fB<branch>\fR and remove the \fB\&.git/rebase\-apply\fR working files, use the command \fBgit rebase \-\-abort\fR instead\&.
.sp
Assume the following history exists and the current branch is "topic":
.sp
.if n \{\
.RS 4
.\}
.nf
          A\-\-\-B\-\-\-C topic
         /
    D\-\-\-E\-\-\-F\-\-\-G master
.fi
.if n \{\
.RE
.\}
.sp
.sp
From this point, the result of either of the following commands:
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase master
git rebase master topic
.fi
.if n \{\
.RE
.\}
.sp
would be:
.sp
.if n \{\
.RS 4
.\}
.nf
                  A\*(Aq\-\-B\*(Aq\-\-C\*(Aq topic
                 /
    D\-\-\-E\-\-\-F\-\-\-G master
.fi
.if n \{\
.RE
.\}
.sp
.sp
\fBNOTE:\fR The latter form is just a short\-hand of \fBgit checkout topic\fR followed by \fBgit rebase master\fR\&. When rebase exits \fBtopic\fR will remain the checked\-out branch\&.
.sp
If the upstream branch already contains a change you have made (e\&.g\&., because you mailed a patch which was applied upstream), then that commit will be skipped and warnings will be issued (if the \fImerge\fR backend is used)\&. For example, running \fBgit rebase master\fR on the following history (in which \fBA\*(Aq\fR and \fBA\fR introduce the same set of changes, but have different committer information):
.sp
.if n \{\
.RS 4
.\}
.nf
          A\-\-\-B\-\-\-C topic
         /
    D\-\-\-E\-\-\-A\*(Aq\-\-\-F master
.fi
.if n \{\
.RE
.\}
.sp
.sp
will result in:
.sp
.if n \{\
.RS 4
.\}
.nf
                   B\*(Aq\-\-\-C\*(Aq topic
                  /
    D\-\-\-E\-\-\-A\*(Aq\-\-\-F master
.fi
.if n \{\
.RE
.\}
.sp
.sp
Here is how you would transplant a topic branch based on one branch to another, to pretend that you forked the topic branch from the latter branch, using \fBrebase \-\-onto\fR\&.
.sp
First let\(cqs assume your \fItopic\fR is based on branch \fInext\fR\&. For example, a feature developed in \fItopic\fR depends on some functionality which is found in \fInext\fR\&.
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
         \e
          o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  next
                           \e
                            o\-\-\-o\-\-\-o  topic
.fi
.if n \{\
.RE
.\}
.sp
.sp
We want to make \fItopic\fR forked from branch \fImaster\fR; for example, because the functionality on which \fItopic\fR depends was merged into the more stable \fImaster\fR branch\&. We want our tree to look like this:
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
        |            \e
        |             o\*(Aq\-\-o\*(Aq\-\-o\*(Aq  topic
         \e
          o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  next
.fi
.if n \{\
.RE
.\}
.sp
.sp
We can get this using the following command:
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-\-onto master next topic
.fi
.if n \{\
.RE
.\}
.sp
Another example of \-\-onto option is to rebase part of a branch\&. If we have the following situation:
.sp
.if n \{\
.RS 4
.\}
.nf
                            H\-\-\-I\-\-\-J topicB
                           /
                  E\-\-\-F\-\-\-G  topicA
                 /
    A\-\-\-B\-\-\-C\-\-\-D  master
.fi
.if n \{\
.RE
.\}
.sp
.sp
then the command
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-\-onto master topicA topicB
.fi
.if n \{\
.RE
.\}
.sp
would result in:
.sp
.if n \{\
.RS 4
.\}
.nf
                 H\*(Aq\-\-I\*(Aq\-\-J\*(Aq  topicB
                /
                | E\-\-\-F\-\-\-G  topicA
                |/
    A\-\-\-B\-\-\-C\-\-\-D  master
.fi
.if n \{\
.RE
.\}
.sp
.sp
This is useful when topicB does not depend on topicA\&.
.sp
A range of commits could also be removed with rebase\&. If we have the following situation:
.sp
.if n \{\
.RS 4
.\}
.nf
    E\-\-\-F\-\-\-G\-\-\-H\-\-\-I\-\-\-J  topicA
.fi
.if n \{\
.RE
.\}
.sp
.sp
then the command
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-\-onto topicA~5 topicA~3 topicA
.fi
.if n \{\
.RE
.\}
.sp
would result in the removal of commits F and G:
.sp
.if n \{\
.RS 4
.\}
.nf
    E\-\-\-H\*(Aq\-\-\-I\*(Aq\-\-\-J\*(Aq  topicA
.fi
.if n \{\
.RE
.\}
.sp
.sp
This is useful if F and G were flawed in some way, or should not be part of topicA\&. Note that the argument to \fB\-\-onto\fR and the \fB<upstream>\fR parameter can be any valid commit\-ish\&.
.sp
In case of conflict, \fBgit rebase\fR will stop at the first problematic commit and leave conflict markers in the tree\&. You can use \fBgit diff\fR to locate the markers (<<<<<<) and make edits to resolve the conflict\&. For each file you edit, you need to tell Git that the conflict has been resolved, typically this would be done with
.sp
.if n \{\
.RS 4
.\}
.nf
git add <filename>
.fi
.if n \{\
.RE
.\}
.sp
After resolving the conflict manually and updating the index with the desired resolution, you can continue the rebasing process with
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-\-continue
.fi
.if n \{\
.RE
.\}
.sp
Alternatively, you can undo the \fIgit rebase\fR with
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-\-abort
.fi
.if n \{\
.RE
.\}
.SH "MODE OPTIONS"
.sp
The options in this section cannot be used with any other option, including not with each other:
.PP
\-\-continue
.RS 4
Restart the rebasing process after having resolved a merge conflict\&.
.RE
.PP
\-\-skip
.RS 4
Restart the rebasing process by skipping the current patch\&.
.RE
.PP
\-\-abort
.RS 4
Abort the rebase operation and reset HEAD to the original branch\&. If
\fB<branch>\fR
was provided when the rebase operation was started, then
\fBHEAD\fR
will be reset to
\fB<branch>\fR\&. Otherwise
\fBHEAD\fR
will be reset to where it was when the rebase operation was started\&.
.RE
.PP
\-\-quit
.RS 4
Abort the rebase operation but
\fBHEAD\fR
is not reset back to the original branch\&. The index and working tree are also left unchanged as a result\&. If a temporary stash entry was created using
\fB\-\-autostash\fR, it will be saved to the stash list\&.
.RE
.PP
\-\-edit\-todo
.RS 4
Edit the todo list during an interactive rebase\&.
.RE
.PP
\-\-show\-current\-patch
.RS 4
Show the current patch in an interactive rebase or when rebase is stopped because of conflicts\&. This is the equivalent of
\fBgit show REBASE_HEAD\fR\&.
.RE
.SH "OPTIONS"
.PP
\-\-onto <newbase>
.RS 4
Starting point at which to create the new commits\&. If the
\fB\-\-onto\fR
option is not specified, the starting point is
\fB<upstream>\fR\&. May be any valid commit, and not just an existing branch name\&.
.sp
As a special case, you may use "A\&.\&.\&.B" as a shortcut for the merge base of A and B if there is exactly one merge base\&. You can leave out at most one of A and B, in which case it defaults to HEAD\&.
.RE
.PP
\-\-keep\-base
.RS 4
Set the starting point at which to create the new commits to the merge base of
\fB<upstream>\fR
and
\fB<branch>\fR\&. Running
\fBgit rebase \-\-keep\-base <upstream> <branch>\fR
is equivalent to running
\fBgit rebase \-\-reapply\-cherry\-picks \-\-no\-fork\-point \-\-onto <upstream>\&.\&.\&.<branch> <upstream> <branch>\fR\&.
.sp
This option is useful in the case where one is developing a feature on top of an upstream branch\&. While the feature is being worked on, the upstream branch may advance and it may not be the best idea to keep rebasing on top of the upstream but to keep the base commit as\-is\&. As the base commit is unchanged this option implies
\fB\-\-reapply\-cherry\-picks\fR
to avoid losing commits\&.
.sp
Although both this option and
\fB\-\-fork\-point\fR
find the merge base between
\fB<upstream>\fR
and
\fB<branch>\fR, this option uses the merge base as the
\fIstarting point\fR
on which new commits will be created, whereas
\fB\-\-fork\-point\fR
uses the merge base to determine the
\fIset of commits\fR
which will be rebased\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
<upstream>
.RS 4
Upstream branch to compare against\&. May be any valid commit, not just an existing branch name\&. Defaults to the configured upstream for the current branch\&.
.RE
.PP
<branch>
.RS 4
Working branch; defaults to
\fBHEAD\fR\&.
.RE
.PP
\-\-apply
.RS 4
Use applying strategies to rebase (calling
\fBgit\-am\fR
internally)\&. This option may become a no\-op in the future once the merge backend handles everything the apply one does\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-empty=(drop|keep|stop)
.RS 4
How to handle commits that are not empty to start and are not clean cherry\-picks of any upstream commit, but which become empty after rebasing (because they contain a subset of already upstream changes):
.PP
\fBdrop\fR
.RS 4
The commit will be dropped\&. This is the default behavior\&.
.RE
.PP
\fBkeep\fR
.RS 4
The commit will be kept\&. This option is implied when
\fB\-\-exec\fR
is specified unless
\fB\-i\fR/\fB\-\-interactive\fR
is also specified\&.
.RE
.PP
\fBstop\fR, \fBask\fR
.RS 4
The rebase will halt when the commit is applied, allowing you to choose whether to drop it, edit files more, or just commit the empty changes\&. This option is implied when
\fB\-i\fR/\fB\-\-interactive\fR
is specified\&.
\fBask\fR
is a deprecated synonym of
\fBstop\fR\&.
.RE
.sp
Note that commits which start empty are kept (unless
\fB\-\-no\-keep\-empty\fR
is specified), and commits which are clean cherry\-picks (as determined by
\fBgit log \-\-cherry\-mark \&.\&.\&.\fR) are detected and dropped as a preliminary step (unless
\fB\-\-reapply\-cherry\-picks\fR
or
\fB\-\-keep\-base\fR
is passed)\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-no\-keep\-empty, \-\-keep\-empty
.RS 4
Do not keep commits that start empty before the rebase (i\&.e\&. that do not change anything from its parent) in the result\&. The default is to keep commits which start empty, since creating such commits requires passing the
\fB\-\-allow\-empty\fR
override flag to
\fBgit commit\fR, signifying that a user is very intentionally creating such a commit and thus wants to keep it\&.
.sp
Usage of this flag will probably be rare, since you can get rid of commits that start empty by just firing up an interactive rebase and removing the lines corresponding to the commits you don\(cqt want\&. This flag exists as a convenient shortcut, such as for cases where external tools generate many empty commits and you want them all removed\&.
.sp
For commits which do not start empty but become empty after rebasing, see the
\fB\-\-empty\fR
flag\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-reapply\-cherry\-picks, \-\-no\-reapply\-cherry\-picks
.RS 4
Reapply all clean cherry\-picks of any upstream commit instead of preemptively dropping them\&. (If these commits then become empty after rebasing, because they contain a subset of already upstream changes, the behavior towards them is controlled by the
\fB\-\-empty\fR
flag\&.)
.sp
In the absence of
\fB\-\-keep\-base\fR
(or if
\fB\-\-no\-reapply\-cherry\-picks\fR
is given), these commits will be automatically dropped\&. Because this necessitates reading all upstream commits, this can be expensive in repositories with a large number of upstream commits that need to be read\&. When using the
\fImerge\fR
backend, warnings will be issued for each dropped commit (unless
\fB\-\-quiet\fR
is given)\&. Advice will also be issued unless
\fBadvice\&.skippedCherryPicks\fR
is set to false (see
\fBgit-config\fR(1))\&.
.sp
\fB\-\-reapply\-cherry\-picks\fR
allows rebase to forgo reading all upstream commits, potentially improving performance\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-allow\-empty\-message
.RS 4
No\-op\&. Rebasing commits with an empty message used to fail and this option would override that behavior, allowing commits with empty messages to be rebased\&. Now commits with an empty message do not cause rebasing to halt\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-m, \-\-merge
.RS 4
Using merging strategies to rebase (default)\&.
.sp
Note that a rebase merge works by replaying each commit from the working branch on top of the
\fB<upstream>\fR
branch\&. Because of this, when a merge conflict happens, the side reported as
\fIours\fR
is the so\-far rebased series, starting with
\fB<upstream>\fR, and
\fItheirs\fR
is the working branch\&. In other words, the sides are swapped\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-s <strategy>, \-\-strategy=<strategy>
.RS 4
Use the given merge strategy, instead of the default
\fBort\fR\&. This implies
\fB\-\-merge\fR\&.
.sp
Because
\fBgit rebase\fR
replays each commit from the working branch on top of the
\fB<upstream>\fR
branch using the given strategy, using the
\fBours\fR
strategy simply empties all patches from the
\fB<branch>\fR, which makes little sense\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-X <strategy\-option>, \-\-strategy\-option=<strategy\-option>
.RS 4
Pass the <strategy\-option> through to the merge strategy\&. This implies
\fB\-\-merge\fR
and, if no strategy has been specified,
\fB\-s ort\fR\&. Note the reversal of
\fIours\fR
and
\fItheirs\fR
as noted above for the
\fB\-m\fR
option\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-rerere\-autoupdate, \-\-no\-rerere\-autoupdate
.RS 4
After the rerere mechanism reuses a recorded resolution on the current conflict to update the files in the working tree, allow it to also update the index with the result of resolution\&.
\fB\-\-no\-rerere\-autoupdate\fR
is a good way to double\-check what
\fBrerere\fR
did and catch potential mismerges, before committing the result to the index with a separate
\fBgit add\fR\&.
.RE
.PP
\-S[<keyid>], \-\-gpg\-sign[=<keyid>], \-\-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
\-q, \-\-quiet
.RS 4
Be quiet\&. Implies
\fB\-\-no\-stat\fR\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Be verbose\&. Implies
\fB\-\-stat\fR\&.
.RE
.PP
\-\-stat
.RS 4
Show a diffstat of what changed upstream since the last rebase\&. The diffstat is also controlled by the configuration option rebase\&.stat\&.
.RE
.PP
\-n, \-\-no\-stat
.RS 4
Do not show a diffstat as part of the rebase process\&.
.RE
.PP
\-\-no\-verify
.RS 4
This option bypasses the pre\-rebase hook\&. See also
\fBgithooks\fR(5)\&.
.RE
.PP
\-\-verify
.RS 4
Allows the pre\-rebase hook to run, which is the default\&. This option can be used to override
\fB\-\-no\-verify\fR\&. See also
\fBgithooks\fR(5)\&.
.RE
.PP
\-C<n>
.RS 4
Ensure at least
\fB<n>\fR
lines of surrounding context match before and after each change\&. When fewer lines of surrounding context exist they all must match\&. By default no context is ever ignored\&. Implies
\fB\-\-apply\fR\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-no\-ff, \-\-force\-rebase, \-f
.RS 4
Individually replay all rebased commits instead of fast\-forwarding over the unchanged ones\&. This ensures that the entire history of the rebased branch is composed of new commits\&.
.sp
You may find this helpful after reverting a topic branch merge, as this option recreates the topic branch with fresh commits so it can be remerged successfully without needing to "revert the reversion" (see the
\m[blue]\fBrevert\-a\-faulty\-merge How\-To\fR\m[]\&\s-2\u[1]\d\s+2
for details)\&.
.RE
.PP
\-\-fork\-point, \-\-no\-fork\-point
.RS 4
Use reflog to find a better common ancestor between
\fB<upstream>\fR
and
\fB<branch>\fR
when calculating which commits have been introduced by
\fB<branch>\fR\&.
.sp
When
\fB\-\-fork\-point\fR
is active,
\fIfork_point\fR
will be used instead of
\fB<upstream>\fR
to calculate the set of commits to rebase, where
\fIfork_point\fR
is the result of
\fBgit merge\-base \-\-fork\-point <upstream> <branch>\fR
command (see
\fBgit-merge-base\fR(1))\&. If
\fIfork_point\fR
ends up being empty, the
\fB<upstream>\fR
will be used as a fallback\&.
.sp
If
\fB<upstream>\fR
or
\fB\-\-keep\-base\fR
is given on the command line, then the default is
\fB\-\-no\-fork\-point\fR, otherwise the default is
\fB\-\-fork\-point\fR\&. See also
\fBrebase\&.forkpoint\fR
in
\fBgit-config\fR(1)\&.
.sp
If your branch was based on
\fB<upstream>\fR
but
\fB<upstream>\fR
was rewound and your branch contains commits which were dropped, this option can be used with
\fB\-\-keep\-base\fR
in order to drop those commits from your branch\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-ignore\-whitespace
.RS 4
Ignore whitespace differences when trying to reconcile differences\&. Currently, each backend implements an approximation of this behavior:
.PP
apply backend
.RS 4
When applying a patch, ignore changes in whitespace in context lines\&. Unfortunately, this means that if the "old" lines being replaced by the patch differ only in whitespace from the existing file, you will get a merge conflict instead of a successful patch application\&.
.RE
.PP
merge backend
.RS 4
Treat lines with only whitespace changes as unchanged when merging\&. Unfortunately, this means that any patch hunks that were intended to modify whitespace and nothing else will be dropped, even if the other side had no changes that conflicted\&.
.RE
.RE
.PP
\-\-whitespace=<option>
.RS 4
This flag is passed to the
\fBgit apply\fR
program (see
\fBgit-apply\fR(1)) that applies the patch\&. Implies
\fB\-\-apply\fR\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-committer\-date\-is\-author\-date
.RS 4
Instead of using the current time as the committer date, use the author date of the commit being rebased as the committer date\&. This option implies
\fB\-\-force\-rebase\fR\&.
.RE
.PP
\-\-ignore\-date, \-\-reset\-author\-date
.RS 4
Instead of using the author date of the original commit, use the current time as the author date of the rebased commit\&. This option implies
\fB\-\-force\-rebase\fR\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-signoff
.RS 4
Add a
\fBSigned\-off\-by\fR
trailer to all the rebased commits\&. Note that if
\fB\-\-interactive\fR
is given then only commits marked to be picked, edited or reworded will have the trailer added\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-i, \-\-interactive
.RS 4
Make a list of the commits which are about to be rebased\&. Let the user edit that list before rebasing\&. This mode can also be used to split commits (see SPLITTING COMMITS below)\&.
.sp
The commit list format can be changed by setting the configuration option rebase\&.instructionFormat\&. A customized instruction format will automatically have the commit hash prepended to the format\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-r, \-\-rebase\-merges[=(rebase\-cousins|no\-rebase\-cousins)], \-\-no\-rebase\-merges
.RS 4
By default, a rebase will simply drop merge commits from the todo list, and put the rebased commits into a single, linear branch\&. With
\fB\-\-rebase\-merges\fR, the rebase will instead try to preserve the branching structure within the commits that are to be rebased, by recreating the merge commits\&. Any resolved merge conflicts or manual amendments in these merge commits will have to be resolved/re\-applied manually\&.
\fB\-\-no\-rebase\-merges\fR
can be used to countermand both the
\fBrebase\&.rebaseMerges\fR
config option and a previous
\fB\-\-rebase\-merges\fR\&.
.sp
When rebasing merges, there are two modes:
\fBrebase\-cousins\fR
and
\fBno\-rebase\-cousins\fR\&. If the mode is not specified, it defaults to
\fBno\-rebase\-cousins\fR\&. In
\fBno\-rebase\-cousins\fR
mode, commits which do not have
\fB<upstream>\fR
as direct ancestor will keep their original branch point, i\&.e\&. commits that would be excluded by
\fBgit-log\fR(1)\*(Aqs
\fB\-\-ancestry\-path\fR
option will keep their original ancestry by default\&. In
\fBrebase\-cousins\fR
mode, such commits are instead rebased onto
\fB<upstream>\fR
(or
\fB<onto>\fR, if specified)\&.
.sp
It is currently only possible to recreate the merge commits using the
\fBort\fR
merge strategy; different merge strategies can be used only via explicit
\fBexec git merge \-s <strategy> [\&.\&.\&.]\fR
commands\&.
.sp
See also REBASING MERGES and INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-x <cmd>, \-\-exec <cmd>
.RS 4
Append "exec <cmd>" after each line creating a commit in the final history\&.
\fB<cmd>\fR
will be interpreted as one or more shell commands\&. Any command that fails will interrupt the rebase, with exit code 1\&.
.sp
You may execute several commands by either using one instance of
\fB\-\-exec\fR
with several commands:
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-i \-\-exec "cmd1 && cmd2 && \&.\&.\&."
.fi
.if n \{\
.RE
.\}
.sp
or by giving more than one
\fB\-\-exec\fR:
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-i \-\-exec "cmd1" \-\-exec "cmd2" \-\-exec \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
If
\fB\-\-autosquash\fR
is used,
\fBexec\fR
lines will not be appended for the intermediate commits, and will only appear at the end of each squash/fixup series\&.
.sp
This uses the
\fB\-\-interactive\fR
machinery internally, but it can be run without an explicit
\fB\-\-interactive\fR\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-root
.RS 4
Rebase all commits reachable from
\fB<branch>\fR, instead of limiting them with an
\fB<upstream>\fR\&. This allows you to rebase the root commit(s) on a branch\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-autosquash, \-\-no\-autosquash
.RS 4
Automatically squash commits with specially formatted messages into previous commits being rebased\&. If a commit message starts with "squash! ", "fixup! " or "amend! ", the remainder of the subject line is taken as a commit specifier, which matches a previous commit if it matches the subject line or the hash of that commit\&. If no commit matches fully, matches of the specifier with the start of commit subjects are considered\&.
.sp
In the rebase todo list, the actions of squash, fixup and amend commits are changed from
\fBpick\fR
to
\fBsquash\fR,
\fBfixup\fR
or
\fBfixup \-C\fR, respectively, and they are moved right after the commit they modify\&. The
\fB\-\-interactive\fR
option can be used to review and edit the todo list before proceeding\&.
.sp
The recommended way to create commits with squash markers is by using the
\fB\-\-squash\fR,
\fB\-\-fixup\fR,
\fB\-\-fixup=amend:\fR
or
\fB\-\-fixup=reword:\fR
options of
\fBgit-commit\fR(1), which take the target commit as an argument and automatically fill in the subject line of the new commit from that\&.
.sp
Setting configuration variable
\fBrebase\&.autoSquash\fR
to true enables auto\-squashing by default for interactive rebase\&. The
\fB\-\-no\-autosquash\fR
option can be used to override that setting\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.PP
\-\-autostash, \-\-no\-autostash
.RS 4
Automatically create a temporary stash entry before the operation begins, and apply it after the operation ends\&. This means that you can run rebase on a dirty worktree\&. However, use with care: the final stash application after a successful rebase might result in non\-trivial conflicts\&.
.RE
.PP
\-\-reschedule\-failed\-exec, \-\-no\-reschedule\-failed\-exec
.RS 4
Automatically reschedule
\fBexec\fR
commands that failed\&. This only makes sense in interactive mode (or when an
\fB\-\-exec\fR
option was provided)\&.
.sp
This option applies once a rebase is started\&. It is preserved for the whole rebase based on, in order, the command line option provided to the initial
\fBgit rebase\fR, the
\fBrebase\&.rescheduleFailedExec\fR
configuration (see
\fBgit-config\fR(1)
or "CONFIGURATION" below), or it defaults to false\&.
.sp
Recording this option for the whole rebase is a convenience feature\&. Otherwise an explicit
\fB\-\-no\-reschedule\-failed\-exec\fR
at the start would be overridden by the presence of a
\fBrebase\&.rescheduleFailedExec=true\fR
configuration when
\fBgit rebase \-\-continue\fR
is invoked\&. Currently, you cannot pass
\fB\-\-[no\-]reschedule\-failed\-exec\fR
to
\fBgit rebase \-\-continue\fR\&.
.RE
.PP
\-\-update\-refs, \-\-no\-update\-refs
.RS 4
Automatically force\-update any branches that point to commits that are being rebased\&. Any branches that are checked out in a worktree are not updated in this way\&.
.sp
If the configuration variable
\fBrebase\&.updateRefs\fR
is set, then this option can be used to override and disable this setting\&.
.sp
See also INCOMPATIBLE OPTIONS below\&.
.RE
.SH "INCOMPATIBLE OPTIONS"
.sp
The following options:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-apply
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-whitespace
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-C
.RE
.sp
are incompatible with the following options:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-merge
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-strategy
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-strategy\-option
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-autosquash
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-rebase\-merges
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-interactive
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-exec
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-no\-keep\-empty
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-empty=
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-[no\-]reapply\-cherry\-picks when used without \-\-keep\-base
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-update\-refs
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-root when used without \-\-onto
.RE
.sp
In addition, the following pairs of options are incompatible:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-keep\-base and \-\-onto
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-keep\-base and \-\-root
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
\-\-fork\-point and \-\-root
.RE
.SH "BEHAVIORAL DIFFERENCES"
.sp
\fBgit rebase\fR has two primary backends: \fIapply\fR and \fImerge\fR\&. (The \fIapply\fR backend used to be known as the \fIam\fR backend, but the name led to confusion as it looks like a verb instead of a noun\&. Also, the \fImerge\fR backend used to be known as the interactive backend, but it is now used for non\-interactive cases as well\&. Both were renamed based on lower\-level functionality that underpinned each\&.) There are some subtle differences in how these two backends behave:
.SS "Empty commits"
.sp
The \fIapply\fR backend unfortunately drops intentionally empty commits, i\&.e\&. commits that started empty, though these are rare in practice\&. It also drops commits that become empty and has no option for controlling this behavior\&.
.sp
The \fImerge\fR backend keeps intentionally empty commits by default (though with \fB\-i\fR they are marked as empty in the todo list editor, or they can be dropped automatically with \fB\-\-no\-keep\-empty\fR)\&.
.sp
Similar to the apply backend, by default the merge backend drops commits that become empty unless \fB\-i\fR/\fB\-\-interactive\fR is specified (in which case it stops and asks the user what to do)\&. The merge backend also has an \fB\-\-empty=(drop|keep|stop)\fR option for changing the behavior of handling commits that become empty\&.
.SS "Directory rename detection"
.sp
Due to the lack of accurate tree information (arising from constructing fake ancestors with the limited information available in patches), directory rename detection is disabled in the \fIapply\fR backend\&. Disabled directory rename detection means that if one side of history renames a directory and the other adds new files to the old directory, then the new files will be left behind in the old directory without any warning at the time of rebasing that you may want to move these files into the new directory\&.
.sp
Directory rename detection works with the \fImerge\fR backend to provide you warnings in such cases\&.
.SS "Context"
.sp
The \fIapply\fR backend works by creating a sequence of patches (by calling \fBformat\-patch\fR internally), and then applying the patches in sequence (calling \fBam\fR internally)\&. Patches are composed of multiple hunks, each with line numbers, a context region, and the actual changes\&. The line numbers have to be taken with some fuzz, since the other side will likely have inserted or deleted lines earlier in the file\&. The context region is meant to help find how to adjust the line numbers in order to apply the changes to the right lines\&. However, if multiple areas of the code have the same surrounding lines of context, the wrong one can be picked\&. There are real\-world cases where this has caused commits to be reapplied incorrectly with no conflicts reported\&. Setting \fBdiff\&.context\fR to a larger value may prevent such types of problems, but increases the chance of spurious conflicts (since it will require more lines of matching context to apply)\&.
.sp
The \fImerge\fR backend works with a full copy of each relevant file, insulating it from these types of problems\&.
.SS "Labelling of conflicts markers"
.sp
When there are content conflicts, the merge machinery tries to annotate each side\(cqs conflict markers with the commits where the content came from\&. Since the \fIapply\fR backend drops the original information about the rebased commits and their parents (and instead generates new fake commits based off limited information in the generated patches), those commits cannot be identified; instead it has to fall back to a commit summary\&. Also, when \fBmerge\&.conflictStyle\fR is set to \fBdiff3\fR or \fBzdiff3\fR, the \fIapply\fR backend will use "constructed merge base" to label the content from the merge base, and thus provide no information about the merge base commit whatsoever\&.
.sp
The \fImerge\fR backend works with the full commits on both sides of history and thus has no such limitations\&.
.SS "Hooks"
.sp
The \fIapply\fR backend has not traditionally called the post\-commit hook, while the \fImerge\fR backend has\&. Both have called the post\-checkout hook, though the \fImerge\fR backend has squelched its output\&. Further, both backends only call the post\-checkout hook with the starting point commit of the rebase, not the intermediate commits nor the final commit\&. In each case, the calling of these hooks was by accident of implementation rather than by design (both backends were originally implemented as shell scripts and happened to invoke other commands like \fBgit checkout\fR or \fBgit commit\fR that would call the hooks)\&. Both backends should have the same behavior, though it is not entirely clear which, if any, is correct\&. We will likely make rebase stop calling either of these hooks in the future\&.
.SS "Interruptability"
.sp
The \fIapply\fR backend has safety problems with an ill\-timed interrupt; if the user presses Ctrl\-C at the wrong time to try to abort the rebase, the rebase can enter a state where it cannot be aborted with a subsequent \fBgit rebase \-\-abort\fR\&. The \fImerge\fR backend does not appear to suffer from the same shortcoming\&. (See \m[blue]\fBhttps://lore\&.kernel\&.org/git/20200207132152\&.GC2868@szeder\&.dev/\fR\m[] for details\&.)
.SS "Commit Rewording"
.sp
When a conflict occurs while rebasing, rebase stops and asks the user to resolve\&. Since the user may need to make notable changes while resolving conflicts, after conflicts are resolved and the user has run \fBgit rebase \-\-continue\fR, the rebase should open an editor and ask the user to update the commit message\&. The \fImerge\fR backend does this, while the \fIapply\fR backend blindly applies the original commit message\&.
.SS "Miscellaneous differences"
.sp
There are a few more behavioral differences that most folks would probably consider inconsequential but which are mentioned for completeness:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Reflog: The two backends will use different wording when describing the changes made in the reflog, though both will make use of the word "rebase"\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Progress, informational, and error messages: The two backends provide slightly different progress and informational messages\&. Also, the apply backend writes error messages (such as "Your files would be overwritten\&...") to stdout, while the merge backend writes them to stderr\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
State directories: The two backends keep their state in different directories under
\fB\&.git/\fR
.RE
.SH "MERGE STRATEGIES"
.sp
The merge mechanism (\fBgit merge\fR and \fBgit pull\fR commands) allows the backend \fImerge strategies\fR to be chosen with \fB\-s\fR option\&. Some strategies can also take their own options, which can be passed by giving \fB\-X<option>\fR arguments to \fBgit merge\fR and/or \fBgit pull\fR\&.
.PP
ort
.RS 4
This is the default merge strategy when pulling or merging one branch\&. This strategy can only resolve two heads using a 3\-way merge algorithm\&. When there is more than one common ancestor that can be used for 3\-way merge, it creates a merged tree of the common ancestors and uses that as the reference tree for the 3\-way merge\&. This has been reported to result in fewer merge conflicts without causing mismerges by tests done on actual merge commits taken from Linux 2\&.6 kernel development history\&. Additionally this strategy can detect and handle merges involving renames\&. It does not make use of detected copies\&. The name for this algorithm is an acronym ("Ostensibly Recursive\(cqs Twin") and came from the fact that it was written as a replacement for the previous default algorithm,
\fBrecursive\fR\&.
.sp
The
\fIort\fR
strategy can take the following options:
.PP
ours
.RS 4
This option forces conflicting hunks to be auto\-resolved cleanly by favoring
\fIour\fR
version\&. Changes from the other tree that do not conflict with our side are reflected in the merge result\&. For a binary file, the entire contents are taken from our side\&.
.sp
This should not be confused with the
\fIours\fR
merge strategy, which does not even look at what the other tree contains at all\&. It discards everything the other tree did, declaring
\fIour\fR
history contains all that happened in it\&.
.RE
.PP
theirs
.RS 4
This is the opposite of
\fIours\fR; note that, unlike
\fIours\fR, there is no
\fItheirs\fR
merge strategy to confuse this merge option with\&.
.RE
.PP
ignore\-space\-change, ignore\-all\-space, ignore\-space\-at\-eol, ignore\-cr\-at\-eol
.RS 4
Treats lines with the indicated type of whitespace change as unchanged for the sake of a three\-way merge\&. Whitespace changes mixed with other changes to a line are not ignored\&. See also
\fBgit-diff\fR(1)
\fB\-b\fR,
\fB\-w\fR,
\fB\-\-ignore\-space\-at\-eol\fR, and
\fB\-\-ignore\-cr\-at\-eol\fR\&.
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fItheir\fR
version only introduces whitespace changes to a line,
\fIour\fR
version is used;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
If
\fIour\fR
version introduces whitespace changes but
\fItheir\fR
version includes a substantial change,
\fItheir\fR
version is used;
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Otherwise, the merge proceeds in the usual way\&.
.RE
.RE
.PP
renormalize
.RS 4
This runs a virtual check\-out and check\-in of all three stages of a file when resolving a three\-way merge\&. This option is meant to be used when merging branches with different clean filters or end\-of\-line normalization rules\&. See "Merging branches with differing checkin/checkout attributes" in
\fBgitattributes\fR(5)
for details\&.
.RE
.PP
no\-renormalize
.RS 4
Disables the
\fBrenormalize\fR
option\&. This overrides the
\fBmerge\&.renormalize\fR
configuration variable\&.
.RE
.PP
find\-renames[=<n>]
.RS 4
Turn on rename detection, optionally setting the similarity threshold\&. This is the default\&. This overrides the
\fImerge\&.renames\fR
configuration variable\&. See also
\fBgit-diff\fR(1)
\fB\-\-find\-renames\fR\&.
.RE
.PP
rename\-threshold=<n>
.RS 4
Deprecated synonym for
\fBfind\-renames=<n>\fR\&.
.RE
.PP
subtree[=<path>]
.RS 4
This option is a more advanced form of
\fIsubtree\fR
strategy, where the strategy makes a guess on how two trees must be shifted to match with each other when merging\&. Instead, the specified path is prefixed (or stripped from the beginning) to make the shape of two trees to match\&.
.RE
.RE
.PP
recursive
.RS 4
This can only resolve two heads using a 3\-way merge algorithm\&. When there is more than one common ancestor that can be used for 3\-way merge, it creates a merged tree of the common ancestors and uses that as the reference tree for the 3\-way merge\&. This has been reported to result in fewer merge conflicts without causing mismerges by tests done on actual merge commits taken from Linux 2\&.6 kernel development history\&. Additionally this can detect and handle merges involving renames\&. It does not make use of detected copies\&. This was the default strategy for resolving two heads from Git v0\&.99\&.9k until v2\&.33\&.0\&.
.sp
The
\fIrecursive\fR
strategy takes the same options as
\fIort\fR\&. However, there are three additional options that
\fIort\fR
ignores (not documented above) that are potentially useful with the
\fIrecursive\fR
strategy:
.PP
patience
.RS 4
Deprecated synonym for
\fBdiff\-algorithm=patience\fR\&.
.RE
.PP
diff\-algorithm=[patience|minimal|histogram|myers]
.RS 4
Use a different diff algorithm while merging, which can help avoid mismerges that occur due to unimportant matching lines (such as braces from distinct functions)\&. See also
\fBgit-diff\fR(1)
\fB\-\-diff\-algorithm\fR\&. Note that
\fBort\fR
specifically uses
\fBdiff\-algorithm=histogram\fR, while
\fBrecursive\fR
defaults to the
\fBdiff\&.algorithm\fR
config setting\&.
.RE
.PP
no\-renames
.RS 4
Turn off rename detection\&. This overrides the
\fBmerge\&.renames\fR
configuration variable\&. See also
\fBgit-diff\fR(1)
\fB\-\-no\-renames\fR\&.
.RE
.RE
.PP
resolve
.RS 4
This can only resolve two heads (i\&.e\&. the current branch and another branch you pulled from) using a 3\-way merge algorithm\&. It tries to carefully detect criss\-cross merge ambiguities\&. It does not handle renames\&.
.RE
.PP
octopus
.RS 4
This resolves cases with more than two heads, but refuses to do a complex merge that needs manual resolution\&. It is primarily meant to be used for bundling topic branch heads together\&. This is the default merge strategy when pulling or merging more than one branch\&.
.RE
.PP
ours
.RS 4
This resolves any number of heads, but the resulting tree of the merge is always that of the current branch head, effectively ignoring all changes from all other branches\&. It is meant to be used to supersede old development history of side branches\&. Note that this is different from the \-Xours option to the
\fIrecursive\fR
merge strategy\&.
.RE
.PP
subtree
.RS 4
This is a modified
\fBort\fR
strategy\&. When merging trees A and B, if B corresponds to a subtree of A, B is first adjusted to match the tree structure of A, instead of reading the trees at the same level\&. This adjustment is also done to the common ancestor tree\&.
.RE
.sp
With the strategies that use 3\-way merge (including the default, \fIort\fR), if a change is made on both branches, but later reverted on one of the branches, that change will be present in the merged result; some people find this behavior confusing\&. It occurs because only the heads and the merge base are considered when performing a merge, not the individual commits\&. The merge algorithm therefore considers the reverted change as no change at all, and substitutes the changed version instead\&.
.SH "NOTES"
.sp
You should understand the implications of using \fBgit rebase\fR on a repository that you share\&. See also RECOVERING FROM UPSTREAM REBASE below\&.
.sp
When the rebase is run, it will first execute a \fBpre\-rebase\fR hook if one exists\&. You can use this hook to do sanity checks and reject the rebase if it isn\(cqt appropriate\&. Please see the template \fBpre\-rebase\fR hook script for an example\&.
.sp
Upon completion, \fB<branch>\fR will be the current branch\&.
.SH "INTERACTIVE MODE"
.sp
Rebasing interactively means that you have a chance to edit the commits which are rebased\&. You can reorder the commits, and you can remove them (weeding out bad or otherwise unwanted patches)\&.
.sp
The interactive mode is meant for this type of workflow:
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
have a wonderful idea
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
hack on the code
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
prepare a series for submission
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 4.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  4." 4.2
.\}
submit
.RE
.sp
where point 2\&. consists of several instances of
.sp
a) regular use
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
finish something worthy of a commit
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
commit
.RE
.sp
b) independent fixup
.sp
.RS 4
.ie n \{\
\h'-04' 1.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  1." 4.2
.\}
realize that something does not work
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 2.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  2." 4.2
.\}
fix that
.RE
.sp
.RS 4
.ie n \{\
\h'-04' 3.\h'+01'\c
.\}
.el \{\
.sp -1
.IP "  3." 4.2
.\}
commit it
.RE
.sp
Sometimes the thing fixed in b\&.2\&. cannot be amended to the not\-quite perfect commit it fixes, because that commit is buried deeply in a patch series\&. That is exactly what interactive rebase is for: use it after plenty of "a"s and "b"s, by rearranging and editing commits, and squashing multiple commits into one\&.
.sp
Start it with the last commit you want to retain as\-is:
.sp
.if n \{\
.RS 4
.\}
.nf
git rebase \-i <after\-this\-commit>
.fi
.if n \{\
.RE
.\}
.sp
An editor will be fired up with all the commits in your current branch (ignoring merge commits), which come after the given commit\&. You can reorder the commits in this list to your heart\(cqs content, and you can remove them\&. The list looks more or less like this:
.sp
.if n \{\
.RS 4
.\}
.nf
pick deadbee The oneline of this commit
pick fa1afe1 The oneline of the next commit
\&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
.sp
The oneline descriptions are purely for your pleasure; \fIgit rebase\fR will not look at them but at the commit names ("deadbee" and "fa1afe1" in this example), so do not delete or edit the names\&.
.sp
By replacing the command "pick" with the command "edit", you can tell \fBgit rebase\fR to stop after applying that commit, so that you can edit the files and/or the commit message, amend the commit, and continue rebasing\&.
.sp
To interrupt the rebase (just like an "edit" command would do, but without cherry\-picking any commit first), use the "break" command\&.
.sp
If you just want to edit the commit message for a commit, replace the command "pick" with the command "reword"\&.
.sp
To drop a commit, replace the command "pick" with "drop", or just delete the matching line\&.
.sp
If you want to fold two or more commits into one, replace the command "pick" for the second and subsequent commits with "squash" or "fixup"\&. If the commits had different authors, the folded commit will be attributed to the author of the first commit\&. The suggested commit message for the folded commit is the concatenation of the first commit\(cqs message with those identified by "squash" commands, omitting the messages of commits identified by "fixup" commands, unless "fixup \-c" is used\&. In that case the suggested commit message is only the message of the "fixup \-c" commit, and an editor is opened allowing you to edit the message\&. The contents (patch) of the "fixup \-c" commit are still incorporated into the folded commit\&. If there is more than one "fixup \-c" commit, the message from the final one is used\&. You can also use "fixup \-C" to get the same behavior as "fixup \-c" except without opening an editor\&.
.sp
\fBgit rebase\fR will stop when "pick" has been replaced with "edit" or when a command fails due to merge errors\&. When you are done editing and/or resolving conflicts you can continue with \fBgit rebase \-\-continue\fR\&.
.sp
For example, if you want to reorder the last 5 commits, such that what was \fBHEAD~4\fR becomes the new \fBHEAD\fR\&. To achieve that, you would call \fBgit rebase\fR like this:
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rebase \-i HEAD~5
.fi
.if n \{\
.RE
.\}
.sp
.sp
And move the first patch to the end of the list\&.
.sp
You might want to recreate merge commits, e\&.g\&. if you have a history like this:
.sp
.if n \{\
.RS 4
.\}
.nf
           X
            \e
         A\-\-\-M\-\-\-B
        /
\-\-\-o\-\-\-O\-\-\-P\-\-\-Q
.fi
.if n \{\
.RE
.\}
.sp
.sp
Suppose you want to rebase the side branch starting at "A" to "Q"\&. Make sure that the current \fBHEAD\fR is "B", and call
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rebase \-i \-r \-\-onto Q O
.fi
.if n \{\
.RE
.\}
.sp
.sp
Reordering and editing commits usually creates untested intermediate steps\&. You may want to check that your history editing did not break anything by running a test, or at least recompiling at intermediate points in history by using the "exec" command (shortcut "x")\&. You may do so by creating a todo list like this one:
.sp
.if n \{\
.RS 4
.\}
.nf
pick deadbee Implement feature XXX
fixup f1a5c00 Fix to feature XXX
exec make
pick c0ffeee The oneline of the next commit
edit deadbab The oneline of the commit after
exec cd subdir; make test
\&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
.sp
The interactive rebase will stop when a command fails (i\&.e\&. exits with non\-0 status) to give you an opportunity to fix the problem\&. You can continue with \fBgit rebase \-\-continue\fR\&.
.sp
The "exec" command launches the command in a shell (the default one, usually /bin/sh), so you can use shell features (like "cd", ">", ";" \&...)\&. The command is run from the root of the working tree\&.
.sp
.if n \{\
.RS 4
.\}
.nf
$ git rebase \-i \-\-exec "make test"
.fi
.if n \{\
.RE
.\}
.sp
.sp
This command lets you check that intermediate commits are compilable\&. The todo list becomes like that:
.sp
.if n \{\
.RS 4
.\}
.nf
pick 5928aea one
exec make test
pick 04d0fda two
exec make test
pick ba46169 three
exec make test
pick f4593f9 four
exec make test
.fi
.if n \{\
.RE
.\}
.sp
.SH "SPLITTING COMMITS"
.sp
In interactive mode, you can mark commits with the action "edit"\&. However, this does not necessarily mean that \fBgit rebase\fR expects the result of this edit to be exactly one commit\&. Indeed, you can undo the commit, or you can add other commits\&. This can be used to split a commit into two:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Start an interactive rebase with
\fBgit rebase \-i <commit>^\fR, where
\fB<commit>\fR
is the commit you want to split\&. In fact, any commit range will do, as long as it contains that commit\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Mark the commit you want to split with the action "edit"\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
When it comes to editing that commit, execute
\fBgit reset HEAD^\fR\&. The effect is that the
\fBHEAD\fR
is rewound by one, and the index follows suit\&. However, the working tree stays the same\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Now add the changes to the index that you want to have in the first commit\&. You can use
\fBgit add\fR
(possibly interactively) or
\fBgit gui\fR
(or both) to do that\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Commit the now\-current index with whatever commit message is appropriate now\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Repeat the last two steps until your working tree is clean\&.
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Continue the rebase with
\fBgit rebase \-\-continue\fR\&.
.RE
.sp
If you are not absolutely sure that the intermediate revisions are consistent (they compile, pass the testsuite, etc\&.) you should use \fBgit stash\fR to stash away the not\-yet\-committed changes after each commit, test, and amend the commit if fixes are necessary\&.
.SH "RECOVERING FROM UPSTREAM REBASE"
.sp
Rebasing (or any other form of rewriting) a branch that others have based work on is a bad idea: anyone downstream of it is forced to manually fix their history\&. This section explains how to do the fix from the downstream\(cqs point of view\&. The real fix, however, would be to avoid rebasing the upstream in the first place\&.
.sp
To illustrate, suppose you are in a situation where someone develops a \fIsubsystem\fR branch, and you are working on a \fItopic\fR that is dependent on this \fIsubsystem\fR\&. You might end up with a history like the following:
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
         \e
          o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  subsystem
                           \e
                            *\-\-\-*\-\-\-*  topic
.fi
.if n \{\
.RE
.\}
.sp
.sp
If \fIsubsystem\fR is rebased against \fImaster\fR, the following happens:
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
         \e                       \e
          o\-\-\-o\-\-\-o\-\-\-o\-\-\-o       o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq  subsystem
                           \e
                            *\-\-\-*\-\-\-*  topic
.fi
.if n \{\
.RE
.\}
.sp
.sp
If you now continue development as usual, and eventually merge \fItopic\fR to \fIsubsystem\fR, the commits from \fIsubsystem\fR will remain duplicated forever:
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
         \e                       \e
          o\-\-\-o\-\-\-o\-\-\-o\-\-\-o       o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-M  subsystem
                           \e                         /
                            *\-\-\-*\-\-\-*\-\&.\&.\&.\&.\&.\&.\&.\&.\&.\&.\-*\-\-*  topic
.fi
.if n \{\
.RE
.\}
.sp
.sp
Such duplicates are generally frowned upon because they clutter up history, making it harder to follow\&. To clean things up, you need to transplant the commits on \fItopic\fR to the new \fIsubsystem\fR tip, i\&.e\&., rebase \fItopic\fR\&. This becomes a ripple effect: anyone downstream from \fItopic\fR is forced to rebase too, and so on!
.sp
There are two kinds of fixes, discussed in the following subsections:
.PP
Easy case: The changes are literally the same\&.
.RS 4
This happens if the
\fIsubsystem\fR
rebase was a simple rebase and had no conflicts\&.
.RE
.PP
Hard case: The changes are not the same\&.
.RS 4
This happens if the
\fIsubsystem\fR
rebase had conflicts, or used
\fB\-\-interactive\fR
to omit, edit, squash, or fixup commits; or if the upstream used one of
\fBcommit \-\-amend\fR,
\fBreset\fR, or a full history rewriting command like
\m[blue]\fB\fBfilter\-repo\fR\fR\m[]\&\s-2\u[2]\d\s+2\&.
.RE
.SS "The easy case"
.sp
Only works if the changes (patch IDs based on the diff contents) on \fIsubsystem\fR are literally the same before and after the rebase \fIsubsystem\fR did\&.
.sp
In that case, the fix is easy because \fIgit rebase\fR knows to skip changes that are already present in the new upstream (unless \fB\-\-reapply\-cherry\-picks\fR is given)\&. So if you say (assuming you\(cqre on \fItopic\fR)
.sp
.if n \{\
.RS 4
.\}
.nf
    $ git rebase subsystem
.fi
.if n \{\
.RE
.\}
.sp
.sp
you will end up with the fixed history
.sp
.if n \{\
.RS 4
.\}
.nf
    o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o\-\-\-o  master
                                 \e
                                  o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq\-\-o\*(Aq  subsystem
                                                   \e
                                                    *\-\-\-*\-\-\-*  topic
.fi
.if n \{\
.RE
.\}
.sp
.SS "The hard case"
.sp
Things get more complicated if the \fIsubsystem\fR changes do not exactly correspond to the ones before the rebase\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.sp
While an "easy case recovery" sometimes appears to be successful even in the hard case, it may have unintended consequences\&. For example, a commit that was removed via \fBgit rebase \-\-interactive\fR will be \fBresurrected\fR!
.sp .5v
.RE
.sp
The idea is to manually tell \fBgit rebase\fR "where the old \fIsubsystem\fR ended and your \fItopic\fR began", that is, what the old merge base between them was\&. You will have to find a way to name the last commit of the old \fIsubsystem\fR, for example:
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
With the
\fIsubsystem\fR
reflog: after
\fBgit fetch\fR, the old tip of
\fIsubsystem\fR
is at
\fBsubsystem@{1}\fR\&. Subsequent fetches will increase the number\&. (See
\fBgit-reflog\fR(1)\&.)
.RE
.sp
.RS 4
.ie n \{\
\h'-04'\(bu\h'+03'\c
.\}
.el \{\
.sp -1
.IP \(bu 2.3
.\}
Relative to the tip of
\fItopic\fR: knowing that your
\fItopic\fR
has three commits, the old tip of
\fIsubsystem\fR
must be
\fBtopic~3\fR\&.
.RE
.sp
You can then transplant the old \fBsubsystem\&.\&.topic\fR to the new tip by saying (for the reflog case, and assuming you are on \fItopic\fR already):
.sp
.if n \{\
.RS 4
.\}
.nf
    $ git rebase \-\-onto subsystem subsystem@{1}
.fi
.if n \{\
.RE
.\}
.sp
.sp
The ripple effect of a "hard case" recovery is especially bad: \fIeveryone\fR downstream from \fItopic\fR will now have to perform a "hard case" recovery too!
.SH "REBASING MERGES"
.sp
The interactive rebase command was originally designed to handle individual patch series\&. As such, it makes sense to exclude merge commits from the todo list, as the developer may have merged the then\-current \fBmaster\fR while working on the branch, only to rebase all the commits onto \fBmaster\fR eventually (skipping the merge commits)\&.
.sp
However, there are legitimate reasons why a developer may want to recreate merge commits: to keep the branch structure (or "commit topology") when working on multiple, inter\-related branches\&.
.sp
In the following example, the developer works on a topic branch that refactors the way buttons are defined, and on another topic branch that uses that refactoring to implement a "Report a bug" button\&. The output of \fBgit log \-\-graph \-\-format=%s \-5\fR may look like this:
.sp
.if n \{\
.RS 4
.\}
.nf
*   Merge branch \*(Aqreport\-a\-bug\*(Aq
|\e
| * Add the feedback button
* | Merge branch \*(Aqrefactor\-button\*(Aq
|\e \e
| |/
| * Use the Button class for all buttons
| * Extract a generic Button class from the DownloadButton one
.fi
.if n \{\
.RE
.\}
.sp
.sp
The developer might want to rebase those commits to a newer \fBmaster\fR while keeping the branch topology, for example when the first topic branch is expected to be integrated into \fBmaster\fR much earlier than the second one, say, to resolve merge conflicts with changes to the DownloadButton class that made it into \fBmaster\fR\&.
.sp
This rebase can be performed using the \fB\-\-rebase\-merges\fR option\&. It will generate a todo list looking like this:
.sp
.if n \{\
.RS 4
.\}
.nf
label onto

# Branch: refactor\-button
reset onto
pick 123456 Extract a generic Button class from the DownloadButton one
pick 654321 Use the Button class for all buttons
label refactor\-button

# Branch: report\-a\-bug
reset refactor\-button # Use the Button class for all buttons
pick abcdef Add the feedback button
label report\-a\-bug

reset onto
merge \-C a1b2c3 refactor\-button # Merge \*(Aqrefactor\-button\*(Aq
merge \-C 6f5e4d report\-a\-bug # Merge \*(Aqreport\-a\-bug\*(Aq
.fi
.if n \{\
.RE
.\}
.sp
.sp
In contrast to a regular interactive rebase, there are \fBlabel\fR, \fBreset\fR and \fBmerge\fR commands in addition to \fBpick\fR ones\&.
.sp
The \fBlabel\fR command associates a label with the current HEAD when that command is executed\&. These labels are created as worktree\-local refs (\fBrefs/rewritten/<label>\fR) that will be deleted when the rebase finishes\&. That way, rebase operations in multiple worktrees linked to the same repository do not interfere with one another\&. If the \fBlabel\fR command fails, it is rescheduled immediately, with a helpful message how to proceed\&.
.sp
The \fBreset\fR command resets the HEAD, index and worktree to the specified revision\&. It is similar to an \fBexec git reset \-\-hard <label>\fR, but refuses to overwrite untracked files\&. If the \fBreset\fR command fails, it is rescheduled immediately, with a helpful message how to edit the todo list (this typically happens when a \fBreset\fR command was inserted into the todo list manually and contains a typo)\&.
.sp
The \fBmerge\fR command will merge the specified revision(s) into whatever is HEAD at that time\&. With \fB\-C <original\-commit>\fR, the commit message of the specified merge commit will be used\&. When the \fB\-C\fR is changed to a lower\-case \fB\-c\fR, the message will be opened in an editor after a successful merge so that the user can edit the message\&.
.sp
If a \fBmerge\fR command fails for any reason other than merge conflicts (i\&.e\&. when the merge operation did not even start), it is rescheduled immediately\&.
.sp
By default, the \fBmerge\fR command will use the \fBort\fR merge strategy for regular merges, and \fBoctopus\fR for octopus merges\&. One can specify a default strategy for all merges using the \fB\-\-strategy\fR argument when invoking rebase, or can override specific merges in the interactive list of commands by using an \fBexec\fR command to call \fBgit merge\fR explicitly with a \fB\-\-strategy\fR argument\&. Note that when calling \fBgit merge\fR explicitly like this, you can make use of the fact that the labels are worktree\-local refs (the ref \fBrefs/rewritten/onto\fR would correspond to the label \fBonto\fR, for example) in order to refer to the branches you want to merge\&.
.sp
Note: the first command (\fBlabel onto\fR) labels the revision onto which the commits are rebased; The name \fBonto\fR is just a convention, as a nod to the \fB\-\-onto\fR option\&.
.sp
It is also possible to introduce completely new merge commits from scratch by adding a command of the form \fBmerge <merge\-head>\fR\&. This form will generate a tentative commit message and always open an editor to let the user edit it\&. This can be useful e\&.g\&. when a topic branch turns out to address more than a single concern and wants to be split into two or even more topic branches\&. Consider this todo list:
.sp
.if n \{\
.RS 4
.\}
.nf
pick 192837 Switch from GNU Makefiles to CMake
pick 5a6c7e Document the switch to CMake
pick 918273 Fix detection of OpenSSL in CMake
pick afbecd http: add support for TLS v1\&.3
pick fdbaec Fix detection of cURL in CMake on Windows
.fi
.if n \{\
.RE
.\}
.sp
.sp
The one commit in this list that is not related to CMake may very well have been motivated by working on fixing all those bugs introduced by switching to CMake, but it addresses a different concern\&. To split this branch into two topic branches, the todo list could be edited like this:
.sp
.if n \{\
.RS 4
.\}
.nf
label onto

pick afbecd http: add support for TLS v1\&.3
label tlsv1\&.3

reset onto
pick 192837 Switch from GNU Makefiles to CMake
pick 918273 Fix detection of OpenSSL in CMake
pick fdbaec Fix detection of cURL in CMake on Windows
pick 5a6c7e Document the switch to CMake
label cmake

reset onto
merge tlsv1\&.3
merge cmake
.fi
.if n \{\
.RE
.\}
.sp
.SH "CONFIGURATION"
.sp
Everything below this line in this section is selectively included from the \fBgit-config\fR(1) documentation\&. The content is the same as what\(cqs found there:
.PP
rebase\&.backend
.RS 4
Default backend to use for rebasing\&. Possible choices are
\fIapply\fR
or
\fImerge\fR\&. In the future, if the merge backend gains all remaining capabilities of the apply backend, this setting may become unused\&.
.RE
.PP
rebase\&.stat
.RS 4
Whether to show a diffstat of what changed upstream since the last rebase\&. False by default\&.
.RE
.PP
rebase\&.autoSquash
.RS 4
If set to true, enable the
\fB\-\-autosquash\fR
option of
\fBgit-rebase\fR(1)
by default for interactive mode\&. This can be overridden with the
\fB\-\-no\-autosquash\fR
option\&.
.RE
.PP
rebase\&.autoStash
.RS 4
When set to true, automatically create a temporary stash entry before the operation begins, and apply it after the operation ends\&. This means that you can run rebase on a dirty worktree\&. However, use with care: the final stash application after a successful rebase might result in non\-trivial conflicts\&. This option can be overridden by the
\fB\-\-no\-autostash\fR
and
\fB\-\-autostash\fR
options of
\fBgit-rebase\fR(1)\&. Defaults to false\&.
.RE
.PP
rebase\&.updateRefs
.RS 4
If set to true enable
\fB\-\-update\-refs\fR
option by default\&.
.RE
.PP
rebase\&.missingCommitsCheck
.RS 4
If set to "warn", git rebase \-i will print a warning if some commits are removed (e\&.g\&. a line was deleted), however the rebase will still proceed\&. If set to "error", it will print the previous warning and stop the rebase,
\fIgit rebase \-\-edit\-todo\fR
can then be used to correct the error\&. If set to "ignore", no checking is done\&. To drop a commit without warning or error, use the
\fBdrop\fR
command in the todo list\&. Defaults to "ignore"\&.
.RE
.PP
rebase\&.instructionFormat
.RS 4
A format string, as specified in
\fBgit-log\fR(1), to be used for the todo list during an interactive rebase\&. The format will automatically have the commit hash prepended to the format\&.
.RE
.PP
rebase\&.abbreviateCommands
.RS 4
If set to true,
\fBgit rebase\fR
will use abbreviated command names in the todo list resulting in something like this:
.sp
.if n \{\
.RS 4
.\}
.nf
        p deadbee The oneline of the commit
        p fa1afe1 The oneline of the next commit
        \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
instead of:
.sp
.if n \{\
.RS 4
.\}
.nf
        pick deadbee The oneline of the commit
        pick fa1afe1 The oneline of the next commit
        \&.\&.\&.
.fi
.if n \{\
.RE
.\}
.sp
Defaults to false\&.
.RE
.PP
rebase\&.rescheduleFailedExec
.RS 4
Automatically reschedule
\fBexec\fR
commands that failed\&. This only makes sense in interactive mode (or when an
\fB\-\-exec\fR
option was provided)\&. This is the same as specifying the
\fB\-\-reschedule\-failed\-exec\fR
option\&.
.RE
.PP
rebase\&.forkPoint
.RS 4
If set to false set
\fB\-\-no\-fork\-point\fR
option by default\&.
.RE
.PP
rebase\&.rebaseMerges
.RS 4
Whether and how to set the
\fB\-\-rebase\-merges\fR
option by default\&. Can be
\fBrebase\-cousins\fR,
\fBno\-rebase\-cousins\fR, or a boolean\&. Setting to true or to
\fBno\-rebase\-cousins\fR
is equivalent to
\fB\-\-rebase\-merges=no\-rebase\-cousins\fR, setting to
\fBrebase\-cousins\fR
is equivalent to
\fB\-\-rebase\-merges=rebase\-cousins\fR, and setting to false is equivalent to
\fB\-\-no\-rebase\-merges\fR\&. Passing
\fB\-\-rebase\-merges\fR
on the command line, with or without an argument, overrides any
\fBrebase\&.rebaseMerges\fR
configuration\&.
.RE
.PP
rebase\&.maxLabelLength
.RS 4
When generating label names from commit subjects, truncate the names to this length\&. By default, the names are truncated to a little less than
\fBNAME_MAX\fR
(to allow e\&.g\&.
\fB\&.lock\fR
files to be written for the corresponding loose refs)\&.
.RE
.PP
sequence\&.editor
.RS 4
Text editor used by
\fBgit rebase \-i\fR
for editing the rebase instruction file\&. The value is meant to be interpreted by the shell when it is used\&. It can be overridden by the
\fBGIT_SEQUENCE_EDITOR\fR
environment variable\&. When not configured, the default commit message editor is used instead\&.
.RE
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
.SH "NOTES"
.IP " 1." 4
revert-a-faulty-merge How-To
.RS 4
\%git-htmldocs/howto/revert-a-faulty-merge.html
.RE
.IP " 2." 4
\fBfilter-repo\fR
.RS 4
\%https://github.com/newren/git-filter-repo
.RE
