In my opinion, the worse part of the article is that it only shows the simple cases of feature branch history.
In particular, they show the following comparison:
Merge:
-> C3 -> C5 -> C7
/ /
C1 -> C2 -> C4 -> C6
Rebase:
-> C3 -> C5] -> C3' -> C5'
/ /
C1 -> C2 -> C4 -> C6
However, a more realistic example of a feature branch that lives for even a few days looks like this:
Merge:
-> C3 -> C5 -> C7 -> C9 -> C11 -> C13 --------> C15
/ / / / \
C1 -> C2 -> C4 -> C6 -> C8 -> C10 -> C12 -> C14 -> C16 -> C17 -> C18
The final history after rebase being:
-> C3' -> C5' -> C9' -> C13'
/ \
C1 -> C2 -> C4 -> C6 -> C8 -> C10 -> C12 -> C14 -> C16 -> C17 --------------------------> C18
A much much simpler history to follow, and obviously shorter.
And the complexity without rebase grows even more if more people are doing local merges and pushing to the same remote branch.
In particular, they show the following comparison:
Merge:
Rebase: However, a more realistic example of a feature branch that lives for even a few days looks like this:Merge:
The final history after rebase being: A much much simpler history to follow, and obviously shorter.And the complexity without rebase grows even more if more people are doing local merges and pushing to the same remote branch.