Da Anonimo (non verificato) , 29 Aprile 2026

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

OpzioneDescrizione
--fullControlla ogni oggetto, inclusi quelli raggiungibili.
--unreachableRiporta oggetti irraggiungibili.
--danglingRiporta oggetti dangling (default).
--no-danglingSopprime listing di dangling.
--lost-foundScrive oggetti dangling in .git/lost-found/.
--connectivity-onlySalta verifica del contenuto blob.
--strictRiporta 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