Instead of storing a full copy, Git can store an object as instructions (a delta) on top of a similar base object. Deltas can chain: git verify-pack -v shows the chain depth. It is the main reason a packfile is much smaller than loose objects.