Por Anónimo (no verificado) , 29 Abril 2026

Fundamentos de packfile

Un packfile agrupa muchos objetos en un archivo con compresión delta — en lugar de almacenar cada versión de un archivo completa, los objetos similares comparten una base y solo guardan la diferencia. El resultado es una reducción de tamaño 5x a 50x en repos reales.

Inspeccionar packs

git verify-pack -v .git/objects/pack/pack-*.idx | head
git count-objects -v
git cat-file --batch-all-objects --batch-check='%(objectname) %(objecttype) %(objectsize:disk)'

Repacking

git repack -ad
git repack -adf --depth=50 --window=250
git repack --geometric=2 -d

Repacking geométrico

El repacking geométrico (Git 2.32+) mantiene una serie de tamaños de pack en una proporción 1:N, evitando el costo de repackear todo cada vez.

Multi-pack-index

Con muchos packs, las búsquedas se ralentizan. El archivo MIDX (Git 2.20+) proporciona un índice unificado a través de los packs:

git multi-pack-index write
git multi-pack-index verify

Ajuste de delta

[pack]
windowMemory = 256m
threads = 0
deltaCacheSize = 256m

Bitmaps de alcanzabilidad

git repack -adb

Errores comunes

Eliminar manualmente archivos de pack — Git los rastrea en metadatos; usa git repack. Establecer pack.window muy alto sin pack.windowMemory puede agotar la memoria.