Rebasing Commits

The git rebase command is used to alter where a sequence of commits is based. This command requires at least the name of the other branch onto which your commits will be relocated. By default, the commits from the current branch that are not already on the other branch are rebased.

A common use for git rebase is to keep a series of commits that you are developing up-to-date with respect to another branch, usually a master branch or a tracking branch from another repository.

In Figure 10-12, two branches have been developed. Originally, the topic branch started on the master branch when it was at commit B. In the meantime, it has progressed to commit E.

Before git rebase

Figure 10-12. Before git rebase

You can keep your commit series up-to-date with respect to the master branch by writing the commits so that they are based on commit E rather than B. Since the topic branch needs to be the current branch, you can use either:

$ git checkout topic
$ git rebase master

or:

$ git rebase master topic

After the rebase operation is complete, the new commit graph resembles Figure 10-13.

After git rebase

Figure 10-13. After git rebase

Using the git rebase command in situations like the one shown in Figure 10-12 is often called forward porting. In this example, the topic branch has been forward ported to the master

Get Version Control with Git 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.