Git содержит только [1] полную версию файлов.Когда вы используете git diff
(или любую другую команду, которая показывает разницу), различия в файлах генерируются на лету (именно так поддерживается много разных форматов).
Фиксация, которая, например, изменяетодин файл представляет собой ссылку на список файлов, составляющих рабочее дерево, одним из них будет новая версия файла, остальные будут такими же, как и при предыдущем коммите.
См. https://git -scm.com / book / ru / v1 / Git-Internals для получения более подробной информации.
[1] В пакетных файлах есть некоторые оптимизации, но в основном это детали реализации.