My team use merge in the past. And we found out in git, merge commit may contains it own changeset. Our code suddenly missing, and when we check on both history, commit look fine. Lo and behold, file deletion happen on merge commit. It bite us hard and I never trust merge commit again. Its very hard to read on complex feature merge.
My team now only use rebase, clean up commit using squash, and fix conflict before landing commit on master branch are kind of natural using rebase. Lead developer also have easier time to check file changes.
It makes sense to me that merge commits would "contain changes" (i.e. that a merge commit's tree would have content that is not in either parent's tree), otherwise how else would you represent the result of resolving merge conflicts?
My team now only use rebase, clean up commit using squash, and fix conflict before landing commit on master branch are kind of natural using rebase. Lead developer also have easier time to check file changes.