Git School · FluxGit

Einen gelöschten Git-Branch wiederherstellen

FluxGit ·

Die Blöcke sind verschiedene Fälle, kein Gesamtskript. Wähle den passenden Fall. Branchnamen, Pfade und VERIFIED_COMMIT vor Nutzung ersetzen. Abbruchbefehle gelten nur für ihre laufende Operation; nicht beide Alternativen ausführen.

Kurzantwort

Das Löschen eines Branches entfernt seine Referenz, nicht unbedingt die Commits. Finde den letzten erhaltenen Commit und gib ihm einen neuen Branchnamen.

Beispiel und Voraussetzungen

Du brauchst den richtigen Commit und seine verfügbaren Objekte. Die Löschmeldung kann den SHA nennen; bewahre ihn auf und prüfe ihn.

Vor Änderungen prüfen

Lies das HEAD-Reflog und den möglichen Verlauf. Das Branch-Reflog wird mit dem Branch gelöscht; das HEAD-Protokoll kann relevante Bewegungen enthalten.

git reflog --date=iso
git show VERIFIED_COMMIT
git log -5 --oneline VERIFIED_COMMIT

Referenz oder getrennten Checkout behalten

Mit git branch rescue/deleted-branch VERIFIED_COMMIT benennst du den Commit ohne Branchwechsel. Du musst das Arbeitsverzeichnis nicht überschreiben.

git branch rescue/deleted-branch VERIFIED_COMMIT

Erster Ablauf

Prüfe mit git show und git log die gewünschte Spitze und Historie. Danach kannst du den ursprünglichen Namen neu anlegen, wenn er frei ist.

Anderes Ergebnis bewusst wählen

Gab es einen Remote-Branch, prüfe vor Fetch und Neuanlage, ob seine Referenz noch existiert. Ein früherer Push garantiert keine dauerhafte Aufbewahrung.

Grenzen und Ausnahmen

Ein neuer Klon enthält dein lokales Reflog nicht. Reflog-Ablauf und Objektbereinigung sind getrennte Regeln; vermeide aggressive Bereinigung während der Rettung.

git ls-remote --heads origin my-branch

Konflikte und Aufräumen

Fehlt eine Referenz, kann git fsck --full --no-reflogs --unreachable erhaltene Commits finden. Prüfe die Kandidaten; Git weiß nicht, welchen Branch du suchst.

git fsck --full --no-reflogs --unreachable

Ergebnis prüfen

Prüfe Verlauf und Zustand des neu angelegten Branches. Die Rettung von Commits stellt keine nie committeten Dateiänderungen wieder her.

git log -5 --oneline rescue/deleted-branch
git status --short

Häufige Fragen

Ein verlorener Name ist keine Sicherung. Fehlt das Objekt bereits, suche einen anderen Klon, einen Mitwirkenden oder eine tatsächlich verfügbare Remote-Referenz.

Operation in FluxGit prüfen

FluxGit kann das Löschen in der App absichern. Das aktivierte Ref journal protokolliert Referenzen, wenn sein installierter Hook läuft; umgangene Hooks und andere Git-Implementierungen sind nicht abgedeckt.

Offizielle Git-Referenzen

Git School · 1:51

Gelöschten Git-Branch mit reflog wiederherstellen

Stelle einen kürzlich gelöschten lokalen Branch wieder her, indem du seinen noch vorhandenen Commit findest und einen neuen Branch anlegst. Sieh reflog und FluxGits Safety Timeline in einem Test-Repository und erfahre, wann der installierte Ref-journal-Hook Referenzänderungen über die Git-Kommandozeile aufzeichnen kann.

Gelöschten Git-Branch mit reflog wiederherstellen
Englische Erzählung. Auf YouTube gibt es manuelle Untertitel in 11 Sprachen. Dieses Transkript ist auf Deutsch.

Auf YouTube ansehen — öffnet einen neuen Tab

In einem Test-Repository aufgenommen. Englische Sprecherstimme und deutsche Untertitel. Zur Wiederherstellung müssen Commit-Objekte und passende Reflog- oder Journaleinträge noch vorhanden sein; das Ref journal sichert keine Dateien ohne Commit.

Transkript der Erzählung lesen
  1. 00:03 Du hast einen Branch mit Arbeit gelöscht: git branch -D, zwei Commits, die nirgendwo gemergt wurden. So holst du sie zurück.
  2. 00:13 In FluxGit ist der Branch aus der Liste verschwunden.
  3. 00:17 Deshalb ist die Arbeit nicht verloren. Ein Branch ist eine Markierung. git branch -D entfernt die Markierung, aber die beiden Commits bleiben im Repository, ohne dass ein Branch auf sie zeigt. Das Reflog erinnert sich noch an sie. Erstelle einen Branch auf dem letzten Commit, und beide sind zurück.
  4. 00:36 Öffne die Safety Timeline. Sie zeigt das Reflog in einfachen Sätzen.
  5. 00:44 Find a lost commit: Gib einen Teil der Nachricht ein. Ein Treffer: der letzte Commit des gelöschten Branches.
  6. 00:52 Create branch here. Ein Wiederherstellungsbranch zeigt auf diesen Commit, und sonst wird nichts verschoben.
  7. 00:58 Beide Commits sind wieder im Graphen.
  8. 01:02 Aktiviere das Ref journal für dieses Repository.
  9. 01:06 Wenn der installierte Git-Hook ausgeführt wird, kann FluxGit Branch-Löschungen über die Git-Kommandozeile aufzeichnen, einschließlich Terminal- oder Agentenbefehlen.
  10. 01:15 Das Umgehen des Hooks und andere Git-Implementierungen sind nicht abgedeckt.
  11. 01:19 Es zeichnet Referenzen auf, keine Dateien ohne Commit.
  12. 01:23 Für die Wiederherstellung müssen die Commit-Objekte weiterhin vorhanden sein.
  13. 01:28 Im Terminal: git reflog, finde den Commit und führe dann git branch mit dem alten Namen und diesem Commit aus.
  14. 01:36 Zusammenfassung. Ein gelöschter Branch ist eine verlorene Markierung; das Reflog findet die Commits noch. Nächste Lektion: wenn ein KI-Agent deinen Code löscht.

Verwandte Abläufe

FluxGit herunterladen