Von Gast (nicht überprüft) , 29 April 2026

Sein Gewicht kennen

Vor der Optimierung messen. Git liefert git count-objects fur Basisstatistiken; das Drittanbieter-git-sizer von GitHub liefert eine tiefere Analyse.

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

Beispieleinblicke

  • Maximale Anzahl Dateien in einem Tree: warnt uber 100k.
  • Maximale Blob-Grosse: warnt uber 50MB.
  • Gesamtgrosse aller Commits.
  • Maximale Tag-Tiefe.
  • Gesamt erreichbare Objekte.

Grosse Dateien finden

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

Aktionen pro Befund

  • Grosse Blobs: zu Git LFS migrieren oder Historie mit filter-repo umschreiben.
  • Viele kleine Dateien: feature.manyFiles, sparse checkout aktivieren.
  • Viele Refs: protocol v2 aktivieren; reftable erwagen.
  • Langsame Walks: commit-graph mit Bloom-Filtern schreiben.
  • Langsame Lookups: MIDX mit Bitmaps aktivieren.

Haufige Fehler

Nur die Grosse von .git auf der Disk anschauen — gepackte Objekte teilen Bytes via Deltas.

Wachstum verfolgen

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