Is “both” an option?
The guy who invented git uses it to serialize code as diffs over email, so I think that speaks for itself.
At the same time, merge commits basically insist on being understood as snapshots.
My understanding is that for efficiency and performance, what’s under the hood is a little bit of both.