Sinossi
git fsck [--full] [--unreachable] [--dangling] [--lost-found]
Descrizione
Il comando git fsck valida l'integrità del database degli oggetti: ogni commit, tree, blob e tag viene controllato per hash corretto, formato valido e riferimenti intatti. Identifica oggetti dangling (nessun ref vi punta, ma non sono irraggiungibili da un reflog) e oggetti irraggiungibili (veramente orfani).
Questo è lo strumento di scelta per diagnosticare corruzione del repository (spesso dopo un guasto del disco o un'operazione interrotta), e per trovare commit "persi" nella categoria dangling che potrebbero essere recuperabili.
Nell'uso quotidiano, git fsck si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione | Descrizione |
|---|---|
--full | Controlla ogni oggetto, inclusi quelli raggiungibili. |
--unreachable | Riporta oggetti irraggiungibili. |
--dangling | Riporta oggetti dangling (default). |
--no-dangling | Sopprime listing di dangling. |
--lost-found | Scrive oggetti dangling in .git/lost-found/. |
--connectivity-only | Salta verifica del contenuto blob. |
--strict | Riporta avvisi extra. |
Esempi
git fsck --full
# Controllo completo
git fsck --lost-found
# Materializza commit/blob dangling in file recuperabili
git fsck --unreachable --no-reflogs
# Trova oggetti veramente orfani (ignorando protezione reflog)
git fsck --connectivity-only
# Controllo più veloce che salta hashing del contenuto
Errori comuni
Agire su avvisi "unreachable" senza considerare la protezione del reflog può perdere lavoro recuperabile. fsck è read-only; non cancella mai nulla da solo. Errori trovati da fsck sono spesso risolti da git gc o ri-clonando una copia fresca.
Comandi correlati
git gc, git reflog, git verify-pack, git prune