That's not really true, is it? Surely Git does have an internal concept of diffing changes, specifically so it knows whether two commits can be merged automatically or if they conflict (because they changed the same lines in the same file).
> Surely Git does have an internal concept of diffing changes
Not in the data model. Packing has deltas, but they're not textual diffs, and they would work fine with binary data... to the extent that the binary data doesn't change too much and the delta-ification algorithms are tuned for that (both of which are doubtful).
> specifically so it knows whether two commits can be merged automatically or if they conflict (because they changed the same lines in the same file).
Conflict generation & resolution is performed on the fly.