By default, rebase will take all commits from the branch that is to be
rebased which are missing in upstream. The new --first-parent option
allows to just follow the first parent and thus completely ignore
merges.
Additionally, when used together with --preserve-merges (which is the
more useful use-case) it will no longer rebase the commits from the
merged-in branches, but instead redo the merge with the original
parents.
That means that:
---H------I topicB
/ \ \
| D---E---F--G topicA
|/
A---B---C master
does no longer become:
-H'--------I'
/ \ \
D'---E'---F'---G' topicA
/
A---B---C master
\
H---I topicB
but instead:
A---B---C master
\ \
\ D'---E'---F'---G' topicA
\ / /
---------H---------I topicB
Signed-off-by: Bj