Когда phd ответил , Git будет читать файлы нескольких пакетов (и файлы индексов пакетов). Тем не менее, обратите внимание, что каждый файл пакета должен быть полностью автономным: базы объектов с удаленными объектами для объекта внутри пакета также должны находиться внутри этого же пакета. (Например, если разделенное представление объекта 0123...
говорит, что начинается с 4567...
и вносит эти изменения , объект 4567...
должен находиться в том же файле пакета.) Это означает, что что много маленьких упаковок, вероятно, будут занимать больше места, чем меньше больших упаковок.
Различия с момента последнего нажатия на самом деле происходят довольно естественно, потому что git push
над интеллектуальными протоколами работает, когда два Gits обращаются друг к другу, чтобы увидеть, какие объекты передать. Затем отправитель отправляет тонкий пакет , который намеренно нарушает указанное выше правило - оно будет содержать только обособленные объекты, а не их основы - которые получатель должен «откармливать», используя git index-pack --fix-thin
. Если получатель делает это и оставляет на месте откормированную, уже не тонкую упаковку, то теперь у получателя есть N + 1 упаковок, в которых получатель имел N упаковок.