Da Anonimo (non verificato) , 29 Aprile 2026

Perche maintenance, non gc

git maintenance (Git 2.31+) e il moderno sostituto orientato ai task di gc --auto. Esegue task specifici (commit-graph, prefetch, incremental-repack, loose-objects, pack-refs, gc) su schedulazioni ottimizzate per ognuno, in background, senza bloccare i comandi interattivi.

Avvio

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

Ispezione e arresto

git maintenance status
git maintenance stop
git maintenance unregister

Task e schedulazioni

TaskSchedule predefinitoCosa fa
commit-graphorarioAggiorna il commit-graph
prefetchorarioFetch in ref nascosti
loose-objectsgiornalieroRipacka oggetti loose
incremental-repackgiornalieroRepack geometrico + MIDX
pack-refssettimanaleImpacchetta i ref loose
gcoff per defaultgc completo

Esecuzioni manuali

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

Configurazione per 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

Disabilitare auto-gc

git config gc.auto 0

Errori comuni

Dimenticare di git maintenance start dopo aver clonato un repo grande.

Log

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