git fsck

Verwaltung

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>...]
[ ] optional| oder<arg> Platzhalter... wiederholbar--flag Option

Optionen

Klicke auf eine Option, um sie aufzuklappen

Einsteiger (2)

Reflog-Einträge nicht als Referenzen zählen: meldet Commits, an die sich nur der Reflog erinnert.

Bei BedarfCommits auflisten, die nur das Reflog am Leben hält

Beispiel

git fsck --no-reflogs

Schreibt hängende Objekte nach .git/lost-found (impliziert --no-reflogs).

Bei BedarfVerlorene Objekte an einem Ort sammeln

Beispiel

git fsck --lost-found

Die richtige Option wählen

Verlorene Arbeit finden

Zuerst den Reflog probieren

BefehlFindet
git reflogJeder Ort, an dem HEAD war (am einfachsten)
git fsck --no-reflogsCommits, die keine Ref erreicht
git fsck --lost-foundAuch hängende Dateien (z. B. vorgemerkt, dann verloren)

Beispiele

Prüfen

git fsck

Still, wenn alles in Ordnung ist.


Verlorene Commits finden

git fsck --no-reflogs

Commits, die kein Branch und kein Tag erreicht.


Einsammeln

git fsck --lost-found

Kopiert sie nach .git/lost-found.

Workflow-Beispiele

1
git fsck --no-reflogs

Hängende Commits finden

2
git show <hash>

Prüfen

3
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

A:

Ein Commit, auf den nichts zeigt. Er bleibt, bis git gc ihn entfernt (standardmäßig nach Ablauf des Reflog-Eintrags).