git pull VS git pull --rebase

Published 2014-11-24

Short answer

git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase

For more detail info how git pull and git rabase differs continue reading.

Long answer: “git merge” and “git rebase”

Suppose originally there were a 3 commits, A, B, C:

Then developer Dan create commit D, and developer Ed created commit E:

Obviously, this conflict should be resolve somehow. For this are 2 ways:

git merge

Both commits D and E are still here, but git create merge commit M that inherits changes from both D and E. However, this create diamond shape, which many people find confusing.

git rebase

Git create commit R which is identical to merge commit M. But, we get rid of commit E, like it have never existed (shown by dots). Because of this, E should be local to developer Ed and should have never pushed to any repository.

Advantage of rebase is that it’s avoided, and history stays nice straight line - most developers love that!

Make my day: * Detailed article