This is why I'm really excited about the potential of Pijul. In pijul, commits are diffs, and you avoid all of the rebase/cherry-picking craziness of Git. Still alpha software, so tons of roughs edges, but the potential is incredible. I think it'll be similar to the centralized -> distributed revolution that git ushered in.
Pijul patches can't be just diffs. I don't know the Pijul implementation but you can see what they're like in Darcs, for instance, in the text form they're meant to be mailed. (Darcs isn't alpha, nothing against Pijul.)
https://nest.pijul.com/pijul/pijul/changes/XTMYHJZLWWT5I2PJA...
First, there are explicit dependencies, and also each section starts with a somewhat cryptic machine-readable description, for example:
B:BD[2.1195] → [2.1195:1291]
One of the challenges in the new version of Pijul was to find a description that was printable in text, and not too-unintelligible to humans.
Darcs isn't alpha, but merges patches in exponential time, which was the initial motivation for Pijul.