git rebase [-i] [--onto onto-commit] base-commit [switch-branch]
git rebase --continue | --skip | --abort

Automatically cherry-pick a series of commits between base-commit and switch-branch onto onto-commit, leaving the result in switch-branch.

If switch-branch is omitted, the default is HEAD. If onto-commit is omitted, the default is base-commit.


Using git rebase can completely disrupt future merges to and from the rebased branch. Use git rebase only for changing commits that have never been shared with others, such as before a new branch has been pushed to a shared repository.

git rebase is a powerful alternative to git merge. You can use it to simplify and rewrite the history of your changes in order to make them easier to review, audit, and share. However, because git rebase rewrites the history of your repository, misuse can cause hard-to-resolve errors, including duplicate commits and merge conflicts.

You can imagine git rebase as a series of commands that looks something like this:

git checkout switch-branch
git reset --hard onto-commit
for commit in base-commit..switch-branch
    git cherry-pick commit

The end result is a new branch that contains onto-branch plus a linear series of commits (i.e., with no merges). The new commits consist of all the commits that were previously part of switch-branch but not base-commit.

With -i, git rebase opens an interactive editor before the rebase operation starts. The editor contains a list of all the commits in base-commit ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.