Git использует вариант Xdelta в файлах пакета. Это отдельно от текстовых различий (для которых Git использует вариант XDiff ). Все хранимые объекты Git также сжимаются с помощью Git zlib deflate, который принципиально похож на gzip , поэтому на этом конкретном уровне он в значительной степени стирает . 1
Если ваши изображения огромны, или вы помечаете их как «не пытайтесь выполнить дельта-сжатие» с помощью .gitattributes
с помощью -delta
, вы можете предварительно сжать их, т. Е. Сохранить их как svgz
файлы , просто для скорости. 2 Если они меньше, и если какой-то файл svg
будет хорошо сжиматься дельта-по сравнению с другим файлом svg
, вы, как правило, захотите избегать pre -сжатие их так, что Git не сможет их дельта-сжать.
См. Также Полезна ли перепаковка репозитория для больших двоичных файлов? и Являются ли файлы пакета Git ошибками, а не снимками? В моем ответе на есть еще кое-что git do, когда мы делаем: git gc - git prune . Суть в том, что вам придется провести несколько тестовых испытаний, чтобы увидеть, что лучше всего подходит для вашей конкретной ситуации. Обратите внимание, что выборка и передача используют «тонкие пакеты» (в которых объекты сжимаются относительно базовых объектов, о которых известно, что они существуют в другом Git, но не включаются в файл пакета), чтобы ускорить передачу по сети, и это может быть больше важнее, чем экономия дискового пространства, так что учтите это.
1 или шесть из одного, полдюжины другого .
2 Даже если время, необходимое Git и другим инструментам для их сжатия, одинаково, маркировка -delta
не позволит Git рассмотреть их для упаковки, что сэкономит git repack
времени.