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:
- the branch to be rebased
- the amount of that branch to be rebased
- the target commit onto which to rebase
Simple example:
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]