This is an old revision of the document!
Overview
Simple and advanced examples of rebasing.
SYNOPSIS
$ git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>] [<upstream> [<branch>]] $ git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>] --root [<branch>] - $ git rebase --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch
The fundamental rebase operation
Three components define a rebase:
- the branch to be rebased
- the amount of that branch to be rebased
- the target commit onto which to rebase
Examples
Example one
A---B---C topic
/
D---E---F---G master
$ git rebase master topic
</code
<code>
A'--B'--C' topic
/
D---E---F---G master
Example requiring --onto newbase:
o---o---o---o---o master
\
o---o---o---o---o next
\
o---o---o topic
DESCRIPTION
If <branch> is specified, git rebase will perform an automatic git checkout <branch> before doing anything else. Otherwise it remains on the current branch.
In other words, the final optional argument [branch] can always be omitted if you first just:
$ git checkout <branch>
then just pretend it says HEAD.
Examples
Removing a sequence of commits
Given:
A <--- B <--- C <--- D <--- E <--- F [HEAD]
we could remove C and D with:
$ git rebase --onto B D
to get:
A <--- B <--- E' <--- F' [HEAD]