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

Conocer tu peso

Antes de optimizar, mide. Git incluye git count-objects para estadísticas básicas; git-sizer de terceros de GitHub da un análisis más profundo con umbrales de problema.

git count-objects

git count-objects -v
git count-objects -vH
git count-objects --human-readable

git-sizer

git-sizer
git-sizer --verbose
git-sizer --no-progress --threshold 1

Insights de muestra

  • Número máximo de archivos en un tree: advierte por encima de 100k.
  • Tamaño máximo de blob: advierte por encima de 50MB.
  • Tamaño total de todos los commits: rastrea crecimiento.
  • Profundidad máxima de tag.
  • Total de objetos alcanzables.

Encontrar archivos grandes

git rev-list --objects --all | \
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize:disk) %(rest)' | \
  awk '$1=="blob" {print $3, $4}' | sort -rn | head

Acciones por hallazgo

  • Blobs grandes: migrar a Git LFS o reescribir historia con filter-repo.
  • Muchos archivos pequeños: habilitar feature.manyFiles, sparse checkout.
  • Muchas refs: habilitar protocolo v2; considerar reftable.
  • Recorridos lentos: escribir commit-graph con filtros Bloom.
  • Búsquedas lentas: habilitar MIDX con bitmaps.

Errores comunes

Mirar solo el tamaño de .git en disco — los objetos empaquetados comparten bytes vía deltas.

Rastrear crecimiento

git-sizer --json > sizer-$(date +%Y%m%d).json
diff <(jq . sizer-old.json) <(jq . sizer-new.json)