So stellen Sie einen gelöschten Git-Stash, einen gelöschten Zweig oder verlorene Commits wieder her
Ein gelöschter Stash oder ein gelöschter Zweig ist selten endgültig verschwunden: Git behält die Commits, bis die Garbage Collection sie entfernt. Finden Sie sie mit reflog oder git fsck, überprüfen Sie, was sie enthalten, und platzieren Sie sie wieder in einem Zweig, bevor es zu spät ist.
Geschrieben von Kodmora
Das Softwarehaus hinter GitTree
- Versteck
- Rückgängigmachen und Wiederherstellen
Auf dieser Seite
Wenn Sie einen Stash löschen oder einen Zweig löschen, entfernt Git den Namen, nicht die Commits. Die Commits bleiben als nicht erreichbare Objekte im Repository, bis die Garbage Collection sie bereinigt, normalerweise nach zwei Wochen oder länger. Suchen Sie mit git reflog nach dem letzten Commit eines gelöschten Zweigs im Reflog, suchen Sie mit git fsck --unreachable nach einem gelöschten Stash, überprüfen Sie ihn mit git show und behalten Sie ihn dann mit git branch rescue <sha>.
Diese Anleitung deckt jeden Fall mit den genauen Befehlen ab, erklärt, wie lange Git verlorene Arbeit aufbewahrt und was nicht wiederhergestellt werden kann, und zeigt die gleiche Wiederherstellung in Lost & Found von GitTree, das jede Quelle auf einmal durchsucht und niemals etwas auscheckt oder zurücksetzt. Lost & Found ist Teil des kostenlosen Plans von GitTree. Um ein Zurücksetzen, ein Rebase oder eine Änderung rückgängig zu machen, lesen Sie stattdessen wie man Git-Reset, Rebase und Commit rückgängig macht.
Wo „verlorene“ Git-Arbeit tatsächlich lebt
Ein Commit ist erreichbar, wenn ein Branch, ein Tag, der Stash oder HEAD zu ihm führt. Durch das Löschen eines Zweigs oder das Löschen eines Stashs sind seine Commits nicht mehr erreichbar, sie verbleiben jedoch in .git/objects. Zwei Datensätze helfen Ihnen, sie zu finden: das Reflog, auf das jeder Zweig und jeder HEAD zuvor zeigten, und die Objektdatenbank selbst, die git fsck durchsuchen kann.
| Was du verloren hast | Wo suchen | Befehl |
|---|---|---|
| Ein gelöschter Zweig, den Sie ausgecheckt haben | Reflog von HEAD | git reflog |
| Ein gelöschter Zweig, den Sie nie ausgecheckt haben | Nicht erreichbare Commits | git fsck --unreachable |
| Ein abgelegter oder gelöschter Vorrat | Nicht erreichbare, zusammenführungsförmige Commits | git fsck --unreachable | grep commit |
| Commits gehen nach einem Reset oder Rebase verloren | Das Reflog des Zweigs | git reflog show <branch> |
| Änderungen werden nie committet oder gespeichert | Nirgendwo in Git | Kann von Git nicht wiederhergestellt werden |
Stellen Sie einen gelöschten Zweig wieder her
Git gibt den letzten Commit des Zweigs aus, wenn Sie ihn löschen (Deleted branch feature/login (was 3f2a9c1)). Wenn diese Meldung nicht mehr angezeigt wird, durchsuchen Sie das Reflog von HEAD nach dem letzten Mal, als Sie sich in der Verzweigung befanden, und erstellen Sie dann die Verzweigung bei diesem Commit neu.
# find the last commit of the branch
git reflog | grep "feature/login"
# check what it holds
git show 3f2a9c1 --stat
# put the branch back
git branch feature/login 3f2a9c1Stellen Sie einen verlorenen Vorrat wieder her
Ein Stash verfügt über kein eigenes Reflog, sobald er gelöscht wird. Durchsuchen Sie daher die nicht erreichbaren Commits. Ein Stash ist ein zusammengeführter Commit, dessen Nachricht mit WIP on oder On <branch>: beginnt, was das Filtern erleichtert. Dies ist die Methode, die in Gits eigener Stash-Dokumentation beschrieben wird.
# list unreachable stash-like commits, newest first
git fsck --unreachable | grep commit | cut -d" " -f3 \
| xargs git log --merges --no-walk --grep=WIP --format="%h %cr %s"
# inspect a candidate
git stash show -p 7c1e0b4
# restore it into your working tree, or keep it on a branch
git stash apply 7c1e0b4
git branch rescue-stash 7c1e0b4Finden Sie jeden freien Commit mit git fsck --lost-found
git fsck --lost-found listet die baumelnden Commits auf und schreibt jeweils eine Kopie in .git/lost-found/commit/, benannt nach ihrer ID. Verwenden Sie es, wenn Sie nicht wissen, wonach Sie suchen: Listen Sie sie mit ihren Daten und Nachrichten auf und verzweigen Sie dann von der gewünschten Seite.
git fsck --lost-found
ls .git/lost-found/commit | xargs git log --no-walk --format="%h %cr %s"
git branch rescue 9d44b0eStellen Sie verlorene Arbeiten mit Lost & Found von GitTree wieder her
Öffnen Sie „Lost & Found“.
Wählen Sie Extras → Lost & Found oder drücken Sie
Alt+Shift+D. Es öffnet sich als vollständiges Fenster auf seiner Startseite, in dem die drei durchsuchten Quellen erläutert werden: das Reflog, die Wiederherstellungsreferenzen von GitTree und nicht erreichbare Objekte.Finden Sie lokale Arbeit
Aktivieren Sie Einen tieferen Scan nach nicht erreichbaren Objekten einbeziehen, um auch nach verlorenen Stashes zu suchen, und klicken Sie dann auf Lokale Arbeit suchen. Gefundene Arbeiten listet jedes Ergebnis mit seiner Quelle und dem Zeitpunkt auf, an dem es angezeigt wurde. Nach Commit, Nachricht oder Quelle filtern schränkt die Liste ein.
Überprüfen Sie es, bevor Sie es behalten
Wählen Sie ein Ergebnis aus: Warum dieses Objekt angezeigt wird zeigt seine Beweise an, seine Nachricht und Dateien werden daneben angezeigt und jede Datei öffnet ihren Inhalt. Es wird nichts ausgecheckt oder angewendet.
Bewahren Sie es auf einem Ast auf
Geben Sie unter Diesen Commit beibehalten einen Neuen Zweignamen ein und klicken Sie auf Wiederherstellungszweig erstellen. Wiederhergestellt listet den Zweig auf; In Grafik anzeigen springt dorthin. Ihre Checkout- und Arbeitsdateien ändern sich nicht.

Wie lange Git verlorene Commits behält
| Einstellung | Standard | Was es kontrolliert |
|---|---|---|
gc.reflogExpire | 90 Tage | Reflog-Einträge für Commits weiterhin erreichbar |
gc.reflogExpireUnreachable | 30 Tage | Reflog-Einträge für Commits sind nicht mehr erreichbar |
gc.pruneExpire | 2 Wochen | Nicht erreichbare Objekte ohne Reflog-Eintrag, z. B. ein gelöschter Stash |
Die Garbage Collection läuft nach einigen Befehlen selbstständig, es handelt sich also um Fenster und nicht um Versprechen. Je früher Sie suchen, desto mehr finden Sie. Eine Kopie an anderer Stelle, beispielsweise der Klon eines Teamkollegen oder ein verschobener Zweig, ist das andere Sicherheitsnetz: Verlorene Arbeit existiert nur auf Ihrem Computer und existiert nur dort.
Was nicht wiederhergestellt werden kann
- Änderungen, die nie committet oder gespeichert wurden, z. B. mit
git checkout -- <file>odergit restoreverworfene Änderungen. - Nicht verfolgte Dateien, die sich nicht in einem mit
-uerstellten Stash befanden. - Bestätigt, dass die Garbage Collection bereits bereinigt wurde.
- Arbeit, die immer nur auf dem Computer einer anderen Person existierte.
Nächste Schritte: Der Lost & Found-Leitfaden dokumentiert jede Seite und jeden Button, Vorherige Branch-Tipps finden deckt die Reflog-Ansicht ab und der Git-Stash-Leitfaden erklärt Apply-, Pop- und Untracked-Dateien, sodass Sie seltener eine Wiederherstellung benötigen.
Häufig gestellte Fragen
Kann ich einen verlorenen Git-Stash wiederherstellen?
Normalerweise ja. Ein gelöschter Stash wird zu einem nicht erreichbaren Commit, bis er durch die Garbage Collection bereinigt wird. Suchen Sie es mit git fsck --unreachable, prüfen Sie es mit git stash show -p <sha> und dann mit git stash apply <sha> oder git branch <name> <sha>.
Wie kann ich einen gelöschten Zweig in Git wiederherstellen?
Suchen Sie den letzten Commit des Zweigs in git reflog (oder die „was <sha>“-Meldung, die Git ausgegeben hat, als Sie ihn gelöscht haben), und führen Sie dann git branch <name> <sha> aus, um den Zweig zurückzusetzen.
Was ist ein Dangling-Commit?
Ein Commit, auf den kein Branch-, Tag-, Stash- oder Reflog-Eintrag verweist. git fsck --lost-found listet sie auf und kopiert sie in .git/lost-found/commit/, damit Sie sie überprüfen können.
Löscht Git GC verlorene Commits?
Ja, sobald sie älter als die Ablaufeinstellungen sind: Standardmäßig werden nicht erreichbare Objekte ohne Reflog-Eintrag nach zwei Wochen gelöscht. Vermeiden Sie git gc und git prune, bis Sie Ihre Arbeit wiederhergestellt haben.
Kann ich Änderungen wiederherstellen, die ich nie vorgenommen habe?
Nicht von Git. In der Objektdatenbank befindet sich nur committete oder gespeicherte Arbeit. Der lokale Verlauf Ihres Editors oder ein Backup ist der richtige Ort, um nachzuschauen.
Ist „Lost & Found“ von GitTree kostenlos?
Ja. Lost & Found ist Teil des kostenlosen Plans von GitTree. Es liest nur Ihr lokales Repository und die einzige Änderung, die es vornimmt, ist der von Ihnen angeforderte Wiederherstellungszweig.
Quellen
Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 5. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.