Снимок просто означает, какое содержимое файла было в данный момент времени.Все системы контроля версий концептуально работают на снимках.Вы хотите быть в состоянии увидеть, как ваш исходный код выглядел в любой момент в прошлом.Они также все хранят различия, чтобы сэкономить место для хранения.Уникальность git заключается в двух аспектах: способ вычисления и хранения внутренних различий не имеет прямого отношения к истории файла, и различия не пересчитываются каждый раз, когда они могут быть.
Допустим, выиметь 1000-байтовый файл, который обновляется практически при каждой сборке.Если вы измените один байт, git будет временно сохранять совершенно новую копию файла с измененным одним байтом.Здесь люди бросают вызов и говорят: «О боже, мерзавец такой глупый, он должен хранить различия прямо сейчас. Я придерживаюсь Subversion».,Почти все, с чем вы хотите сравнить, это вещи, которые изменились с момента последнего нажатия.Поскольку он еще не вычислил различия, у git просто есть полный и легко доступный кэш всех этих недавно измененных файлов, где другие системы контроля версий должны начинать с версии 1 и применять сотни различий для восстановления того же контента..
Затем, когда вы нажимаете, чтобы поделиться своими изменениями, git gc
запускается автоматически для более эффективного хранения этих файлов для передачи по сети, а затем вычисляются и сохраняются различия.Однако это не обязательно diff из версии n-1 в версию n файла.Если содержимое повторяется во многих файлах, git может принять это во внимание.Если одно и то же изменение сделано в нескольких ветках, git может принять это во внимание.Если файл перемещен, git может принять это во внимание.Если в будущем будет обнаружена некоторая эвристика, которая может сделать вещи более эффективными, git может принять это во внимание, не нарушая существующих клиентов.Это не связано с идеей, что diff всегда должен быть от одной последовательной версии к следующей.
Это фундаментальные проектные решения, подобные этим, которые делают git таким быстрым по сравнению с другими программами контроля версий.