Wie kann ich gelöschte Commits in GitHub Desktop wiederherstellen?
- Einführung in das Problem
- Funktionsweise von GitHub Desktop und warum Git-Kommandos nötig sind
- Commits über das Reflog finden
- Wiederherstellung des gelöschten Commits
- Prüfen und Zusammenführen in GitHub Desktop
- Fazit
Einführung in das Problem
Beim Arbeiten mit GitHub Desktop kann es vorkommen, dass versehentlich Commits gelöscht oder aus dem Verlauf entfernt werden. Das kann beispielsweise durch das Zurücksetzen eines Branches, das Rebasen oder das Löschen eines Branches geschehen. Da Git commithistorie nicht einfach vollständig und endgültig entfernt, sondern in vielen Fällen noch im sogenannten Reflog oder anderen internen Referenzen vorhanden ist, gibt es Möglichkeiten, diese gelöschten Commits wiederherzustellen.
Funktionsweise von GitHub Desktop und warum Git-Kommandos nötig sind
GitHub Desktop ist eine grafische Oberfläche für Git, die viele komplexe Operationen vereinfacht. Für manche fortgeschrittene Fehlerbehebungen, wie das Wiederherstellen gelöschter Commits, sind die in Git vorhandenen Kommandozeilenwerkzeuge allerdings besser geeignet. Grund hierfür ist, dass Git intern Commits auch nach scheinbarem Löschen für eine gewisse Zeit behält, und diese Commits können über spezielle Git-Kommandos gefunden und wieder in den Branchverlauf eingefügt werden.
Commits über das Reflog finden
Git dokumentiert alle Änderungen des HEAD-Status über das sogenannte reflog. Das bedeutet, auch wenn ein Commit nicht mehr im normalen Branchverlauf auftaucht, kann er dennoch über den Reflog erreichbar sein. Um den Reflog anzusehen, muss das Terminal geöffnet werden. Falls Sie nur GitHub Desktop verwenden, können Sie dort über das Menü Repository den Punkt Open in Terminal auswählen. Im Terminal geben Sie dann den Befehl git reflog ein. Dort sehen Sie eine Liste aller letzten Bewegungen des HEAD-Pointers inklusive der gelöschten Commits.
Wiederherstellung des gelöschten Commits
Haben Sie den Commit in der Liste identifiziert (durch die Commit-Hash-Nummer und die Beschreibung), kann dieser wiederhergestellt werden. Dazu gibt es verschiedene Wege, je nach Situation. Zum Beispiel können Sie ein neues Branch an dem gelöschten Commit erstellen, indem Sie im Terminal folgenden Befehl ausführen:
git branch wiederhergestellt
Dieser Befehl legt einen neuen Branch namens wiederhergestellt an, der auf dem gelöschten Commit basiert. Danach können Sie diesen Branch in GitHub Desktop sichtbar machen, indem Sie den Branch wechseln. Alternativ ist es auch möglich, den Branch auf diesen Commit zu resetten oder den Commit mittels Cherry-Pick in einen bestehenden Branch einzufügen.
Prüfen und Zusammenführen in GitHub Desktop
Nachdem Sie den gelöschten Commit auf einem neuen Branch wiederhergestellt haben, können Sie in GitHub Desktop wie gewohnt mit dem neuen Branch arbeiten. Dort können Sie die Änderungen prüfen und den Branch in einen anderen Branch mergen, falls gewünscht. So stellen Sie sicher, dass die zuvor gelöschten Änderungen wieder in den aktiven Entwicklungszweig gelangen.
Fazit
Zusammengefasst ist es in GitHub Desktop selbst nicht möglich, gelöschte Commits direkt über die Oberfläche wiederherzustellen. Dank der Git-Funktionalität und dem Zugriff auf das Terminal kann aber relativ einfach über das git reflog der verlorene Commit gefunden und wieder in die Branch-Struktur eingefügt werden. Ein wenig Erfahrung im Umgang mit der Kommandozeile ist dabei hilfreich, aber die Schritte sind mit etwas Geduld gut machbar.
