Rebasing Merge Commits in Git (a cautionary tale for software teams)
notes.envato.com
notes.envato.com
It adds a lot of noise to the commit history if you're trying to differentiate between "oh, this bug fix or feature was added into master/trunk/whatever" and "oh, that was just bob getting the lastest code from upstream"
Thus, anything that introduces noise to the history reduces the value of the information it contains. But 'git pull' is even worse than this - it actually creates 'misleading' history:
Each merge commit has (at least) two parents, the first of which is special in a subtle way - it's the commit you were _on_ when you merged the changes _in_. So, with a nice history, you can follow a branch back in time by following the first parent of each commit.
When you 'git pull', the merge commit has your local changes as the first parent, and the rest of the team's changes look like a separate chunk of work merged in.
Git-bisect is an extremely useful tool for searching the history for the commit that introduced a problem, but a history full of misleading merges dramatically reduces its usefulness.
Still, YMMV, the costs of keeping a good history may outweigh the benefits for you and your team. For me and mine, it's definitely worth it.