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

Warum der Index langsam ist

Selbst bei Sparse Checkout enthalt der Index standardmassig einen Eintrag pro Datei im gesamten Repo. Der Sparse Index (Git 2.37+) ersetzt ausgeschlossene Verzeichnisse durch einen einzigen Tree-Eintrag.

Aktivieren

git sparse-checkout init --cone --sparse-index
git config index.sparse true
git update-index --sparse

Wie es funktioniert

Jedes ausgeschlossene Verzeichnis wird im Index als ein Eintrag mit Modus 040000 (Tree) reprasentiert.

Inspektion

git ls-files --sparse | head
git ls-files -t | grep ^S | head
GIT_TRACE2_PERF=1 git status 2>&1 | grep sparse

Performance-Zahlen

Auf einem realen Monorepo mit 4M Dateien berichtete das Microsoft-Office-Team von einem Ruckgang von git status von 3 Sekunden auf unter 200ms.

Kompatibilitat

Viele Befehle sind sparse-aware: status, add, commit, diff, checkout, reset, restore, stash, ls-files.

Expansion erzwingen

git update-index --no-sparse
git update-index --sparse

Haufige Fehler

Versuchen, den Sparse Index im Non-Cone-Sparse-Checkout-Modus zu aktivieren.