git fsck
Prüft das Repository und findet unerreichbare Objekte
Der Befehl 'git fsck' (file system check) prüft, ob jedes Objekt im Repository intakt ist und die Historie vollständig verbunden ist. Er meldet auch hängende (dangling) Objekte — Commits und Dateien, auf die nichts mehr zeigt, etwa ein Commit, den git reset --hard zurückließ, sobald der Reflog ihn vergessen hat. Sie lassen sich noch retten, bis git gc sie löscht.
Syntax
git fsck [--unreachable] [--no-reflogs] [--lost-found] [--full] [<object>...]Optionen
Die richtige Option wählen
Verlorene Arbeit finden
Zuerst den Reflog probieren
| Befehl | Findet |
|---|---|
git reflog | Jeder Ort, an dem HEAD war (am einfachsten) |
git fsck --no-reflogs | Commits, die keine Ref erreicht |
git fsck --lost-found | Auch hängende Dateien (z. B. vorgemerkt, dann verloren) |
Beispiele
Prüfen
git fsckStill, wenn alles in Ordnung ist.
Verlorene Commits finden
git fsck --no-reflogsCommits, die kein Branch und kein Tag erreicht.
Einsammeln
git fsck --lost-foundKopiert sie nach .git/lost-found.
Workflow-Beispiele
git fsck --no-reflogsHängende Commits finden
git show <hash>Prüfen
git branch rescue <hash>Behalten
Fehlerbehebung
error: object file … is empty / corrupt
Ursache: Schaden durch Platte oder Absturz
Hole eine frische Kopie vom Remote; sichere .git vorher
Tipps & Stolperfallen
Best Practices
- ✓Führe git fsck bei Verdacht auf Beschädigung aus, vor git gc.
Häufige Fehler
- ✗Wegen „dangling"-Objekten in Panik geraten — das sind normale Reste, die git gc aufräumt.
FAQ
Ein Commit, auf den nichts zeigt. Er bleibt, bis git gc ihn entfernt (standardmäßig nach Ablauf des Reflog-Eintrags).