Rebasing and merging are both designed to integrate changes from one branch into another branch in git, but they accomplish this in different ways.

Git Rebase vs. Git Merge Explained

  • Git Rebase: Rebasing in git integrates a change from the base of the feature branch to the master branch’s endpoint. It’s useful for streamlining complex histories.
  • Git Merge: Merging takes the contents of the feature branch and integrates it with the master branch. The feature branch stays the same, making it useful for tracking history on complex projects. 

For example, let’s say we have a series of commits. The merge will result as a combination of commits, whereas rebase will add all the changes in the feature branch starting from the last commit of the master branch.

illustration of a rebase and merge to a main branch
Illustrated example of a rebase and merge commit. | Image: Filiz Şenyüzlüler

More on Software EngineeringHow to Fix “Invalid Active Developer Path” in Git

 

What’s the Difference Between Git Rebase and Git Merge?

  • When you rebase a feature branch onto a master, you move the base of the feature branch to the master branch’s ending point.
  • Merging takes the contents of the feature branch and integrates it with the master branch. As a result, only the master branch is changed. The feature branch history remains the same.
  • Merging adds a new commit to your history.

Commits will look like this:

code integration results for rebase and merge
Code results for a rebase and merge. | Image: Filiz Şenyüzlüler
A tutorial on the basics of git rebase and merge. | Video: Academind

More on Software Engineering5 Git Commands That Don’t Get Enough Hype

 

When to Use Git Rebase vs. Git Merge

If the feature branch you are getting changes from is shared with other developers, then you should use merge. Rebasing is not recommended because the rebasing process will create inconsistent repositories. 

You should also use merge if you want to see the history as it happened. Merge preserves history, whereas rebase rewrites it.

Rebasing makes the most sense for an individual project. Rebasing is useful for streamlining a complex history. You are able to change the commit history via an interactive rebase. You can remove undesired commits, squash two or more commits into one or edit the commit message.

Rebase will present conflicts one commit at a time, whereas merge will present them all at once. It’s better and much easier to handle the conflicts, but you shouldn’t forget that reverting a rebase is much more difficult than reverting a merge if there are many conflicts. 

Expert Contributors

Built In’s expert contributor network publishes thoughtful, solutions-oriented stories written by innovative tech professionals. It is the tech industry’s definitive destination for sharing compelling, first-person accounts of problem-solving on the road to innovation.

Learn More

Great Companies Need Great People. That's Where We Come In.

Recruit With Us