When you merge a branch you end up with messy merge commits.
Rebasing might take a bit to get your head around, but you get a much cleaner project history.
This makes it easier to navigate your project with commands like git log, git bisect, and gitk.
Figure: When merging: a messy merge commit is created any time you need to incorporate upstream changes from the master branch
Figure: Git Rebase moves your new commits to the end of the master branch. This ensure that you don't end up with messy merge commits and you have a clean linear project history
Warning: If you don’t follow the Golden Rule of Rebasing, you could end up in a world of pain.