Sinossi
git maintenance start
git maintenance run [--task=<task>]
git maintenance stop
Descrizione
Il comando git maintenance, introdotto in Git 2.29, sostituisce ed estende git gc --auto con task di manutenzione schedulati e a grana fine: prefetch, generazione di commit-graph, packing di oggetti loose, repack incrementale e pack-refs. Eseguire git maintenance start registra una schedule ricorrente via cron, launchd, systemd o Task Scheduler a seconda della piattaforma.
Per server-side o cloni di lunga durata di repository grandi, abilitare maintenance migliora drasticamente la responsività quotidiana. Operazioni come git status e git log diventano più veloci quando i dati commit-graph e reachable-bitmap sono mantenuti freschi.
Nell'uso quotidiano, git maintenance si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Sottocomando / Opzione | Descrizione |
|---|---|
start | Registra una schedule in background. |
stop | Annulla la registrazione della schedule. |
run | Esegue task immediatamente. |
--task=<task> | Esegue solo questo task (commit-graph, prefetch, ecc.). |
register / unregister | Aggiunge o rimuove repo dal set di maintenance. |
--schedule=<freq> | Frequenza: hourly, daily, weekly. |
Esempi
git maintenance start
# Configura maintenance in background per questo repo
git maintenance run --task=commit-graph
# Aggiorna il commit-graph on demand
git maintenance run --task=prefetch
# Scarica oggetti upstream senza aggiornare i ref
git maintenance unregister
# Ferma la maintenance schedulata per questo repo
Errori comuni
Dimenticare che start registra un task schedulato a livello di sistema. Su macchine condivise, questo potrebbe non essere ciò che vuoi; usa invece register in un file di config. Disabilitare il gc automatico ma non abilitare maintenance lascia il repo crescere senza controllo.
Comandi correlati
git gc, git commit-graph, git fetch --prefetch, git repack