You're looking for "bup". It's basically a special flavor of git that works at the block level rather than the file level, so incremental revisions only need to store the blocks that changed. It also has a bunch of other optimizations for storing a large number of potentially large files.
More (potentially stale) info here: https://lwn.net/Articles/380983/