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

Warum maintenance, nicht gc

git maintenance (Git 2.31+) ist der moderne, task-orientierte Ersatz fur gc --auto. Es fuhrt spezifische Tasks (commit-graph, prefetch, incremental-repack, loose-objects, pack-refs, gc) auf optimierten Schedules im Hintergrund aus.

Starten

git maintenance start
git maintenance start --scheduler=systemd
git maintenance start --scheduler=launchctl
git maintenance start --scheduler=schtasks

Inspektion und Stoppen

git maintenance status
git maintenance stop
git maintenance unregister

Tasks und Schedules

TaskDefault ScheduleWas es tut
commit-graphstundlichAktualisiert den Commit-Graph
prefetchstundlichFetcht in versteckte Refs
loose-objectstaglichPackt loose Objekte
incremental-repacktaglichGeometrisches Repack + MIDX
pack-refswochentlichPackt loose Refs
gcstandardmassig ausVollstandiges gc

Manuelle Ausfuhrungen

git maintenance run --task=commit-graph
git maintenance run --task=incremental-repack
git maintenance run --auto

Konfiguration pro Task

[maintenance]
auto = false
strategy = incremental
[maintenance "commit-graph"]
enabled = true
[maintenance "incremental-repack"]
enabled = true
auto = 100
[maintenance "loose-objects"]
enabled = true
batchSize = 50

Auto-gc deaktivieren

git config gc.auto 0

Haufige Fehler

Vergessen, git maintenance start nach Klonen eines grossen Repos auszufuhren.

Logs

Auf systemd: journalctl --user -u git-maintenance.service. Auf macOS: ~/Library/Logs/git-maintenance.log.