`bup` notionally does this a lot better, or git-lfs.
https://github.com/bup/bup
https://raw.githubusercontent.com/bup/bup/main/DESIGN
https://git-lfs.com/
git really needs textual representation for any kind of meaningful commit, and binaries totally break that.
This is precisely what git does NOT do.
This is precisely what git does NOT do.