Earlier quoted context omitted.
`rebase` is simpler than `merge` in larger teams/projects, as the history will be much cleaner.
History is only "cleaner" because Git in its default configuration only throws the raw version graph at you and fails to visualize it in a readable fashion. With a properly structured visualization, such as Bazaar's hierarchical logs, merging is not just as clean, it actually carries more information. In hierarchical logs, a merge commit stands for the series of commits that are being merged. You can then unfold such…
None of that information is too relevant. If you have the commits individually cherry picked in your stream, that's most of the info you ever need about those commits. There is some earlier version of those commits in a different stream, where they look different. Usually, who cares.
The way to track that is some sort of additional meta-data. An example of this is the Gerrit Change-ID.