Zum Inhalt springen
GitTree
Git-Anleitungen6 Min. gelesen

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

Aktualisiert
  • 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.

Welches Tool findet welche Art von verlorener Arbeit?
Was du verloren hastWo suchenBefehl
Ein gelöschter Zweig, den Sie ausgecheckt habenReflog von HEADgit reflog
Ein gelöschter Zweig, den Sie nie ausgecheckt habenNicht erreichbare Commitsgit fsck --unreachable
Ein abgelegter oder gelöschter VorratNicht erreichbare, zusammenführungsförmige Commitsgit fsck --unreachable | grep commit
Commits gehen nach einem Reset oder Rebase verlorenDas Reflog des Zweigsgit reflog show <branch>
Änderungen werden nie committet oder gespeichertNirgendwo in GitKann 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 3f2a9c1

Stellen 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 7c1e0b4

Finden 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 9d44b0e

Stellen Sie verlorene Arbeiten mit Lost & Found von GitTree wieder her

  1. Ö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.

  2. 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.

  3. Ü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.

  4. 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.

Lost & Found in GitTree wird auf seiner Startseite geöffnet: das Reflog, Wiederherstellungsreferenzen und ein optionaler tieferer Scan, bevor lokale Arbeit gefunden wird.
Lost & Found in GitTree wird auf seiner Startseite geöffnet: das Reflog, Wiederherstellungsreferenzen und ein optionaler tieferer Scan, bevor lokale Arbeit gefunden wird.

Wie lange Git verlorene Commits behält

Gits Standard-Ablaufeinstellungen
EinstellungStandardWas es kontrolliert
gc.reflogExpire90 TageReflog-Einträge für Commits weiterhin erreichbar
gc.reflogExpireUnreachable30 TageReflog-Einträge für Commits sind nicht mehr erreichbar
gc.pruneExpire2 WochenNicht 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> oder git restore verworfene Änderungen.
  • Nicht verfolgte Dateien, die sich nicht in einem mit -u erstellten 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.