Wiederherstellen bestimmter Daten mithilfe von Git-Befehlen

Abgeschlossen

Die Möglichkeit der Datenwiederherstellung mithilfe von Git-Befehlen ist für Entwickler entscheidend, um versehentliche Änderungen rückgängig machen und gelöschte Dateien oder verloren gegangene Commits wiederherstellen zu können. Sie trägt dazu bei, unerwartete Downtimes zu minimieren und die Projektkontinuität sicherzustellen. Obwohl die Vorteile eindeutig sind, ist es wichtig, auf die potenziellen Risiken hinzuweisen. Die in dieser Lerneinheit beschriebenen Git-Befehle sind mit Bedacht anzuwenden, insbesondere beim Bearbeiten des Commitverlaufs oder Rückgängigmachen von Änderungen, da Fehler zu Datenverlusten führen können.

Git-Befehle für die Datenwiederherstellung

Git-Befehle für die Datenwiederherstellung können in mehrere Kategorien unterteilt werden, darunter das Wiederherstellen von Commits, Dateien, bestimmten Codezeilen und gelöschten Commits oder Branches.

Wiederherstellen von Commits

  • git log: Listet den Commitverlauf eines Repositorys auf. Sie können durch das Protokoll navigieren, um den Commit zu finden, den Sie wiederherstellen möchten.
  • git checkout <Commit>: Wechselt zu einem bestimmten Commit, wodurch im Grunde der Zustand des Repositorys zum Zeitpunkt dieses Commits „wiederhergestellt“ wird.
  • git cherry-pick <Commit>: Übernimmt die durch einen bestimmten Commit eingeführten Änderungen für Ihren aktuellen Branch.

Wiederherstellen von Dateien

  • git checkout <Commit><Datei>: Stellt eine bestimmte Datei aus einem vorherigen Commit wieder her.
  • git restore <Datei>: Verwirft lokale Änderungen und stellt die Datei im zuletzt committeten Zustand wieder her, sofern Sie die Änderungen noch nicht committet haben.

Wiederherstellen bestimmter Codezeilen

  • git blame <Datei>: Zeigt die Revision und den Autor jeder Zeile in einer Datei an, sodass Sie den Commit identifizieren können, durch den eine bestimmte Änderung eingeführt wurde.
  • git show <Commit>:<Datei>: Zeigt den Inhalt einer Datei zum Zeitpunkt eines bestimmten Commits an. Sie können den Commit- und Dateipfad angeben, um den zu diesem Zeitpunkt vorhandenen Inhalt anzuzeigen.

Wiederherstellen gelöschter Commits oder Branches

  • git reflog: Zeigt einen Datensatz aller Commits an. Sie können diesen Befehl verwenden, um den SHA-1-Hash eines zuvor gelöschten Commits oder Branches zu identifizieren, und diesen dann auschecken oder wiederherstellen.
  • git fsck --lost-found: Überprüft die Integrität des Repositorys und listet alle Commits auf, die nicht über einen Branch oder Tag erreichbar sind. Mit diesem Befehl können Sie verloren gegangene Commits wiederherstellen.

Denken Sie daran, diese Befehle mit Vorsicht zu verwenden, insbesondere wenn Sie die Commit-Historie manipulieren oder Änderungen rückgängig machen wollen. Machen Sie immer eine Sicherung Ihres Projektarchivs, bevor Sie beginnen, oder verwenden Sie git stash, um Ihre aktuellen Änderungen zu speichern, bevor Sie irgendwelche Wiederherstellungsoperationen versuchen.

Beispielszenario

Sehen wir uns ein Beispielszenario an, das die Verwendung von Git-Befehlen zum Wiederherstellen einer gelöschten Datei veranschaulicht. Angenommen, eine Datei mit dem Namen „example.txt“ in Ihrem Git-Repository wurde versehentlich gelöscht, und Sie müssen sie wiederherstellen.

Anzeigen des Commitverlaufs:

  • Zeigen Sie zunächst den Commitverlauf an:
    Befehl „git log“
  • Identifizieren Sie in der Auflistung des Commitverlaufs den SHA-1-Hash des Commits, in dem die Datei „example.txt“ zuletzt vorhanden war.

Wiederherstellen der gelöschten Datei:

  • Nachdem Sie den SHA-1-Hash des Commits identifiziert haben, verwenden Sie „git checkout“, um die Datei wiederherzustellen:
    git checkout <commit_SHA>^ -- example.txt
  • Ersetzen Sie <commit_SHA> durch den SHA-1-Hash des Commits. Das ^-Symbol gibt das übergeordnete Element dieses Commits an, wodurch die Datei in dem Zustand wiederhergestellt wird, den sie vor dem Löschen aufwies.

Überprüfen der Änderungen:

  • Vergewissern Sie sich nach dem Wiederherstellen, dass die Datei erfolgreich wiederhergestellt wurde, indem Sie den Repositorystatus überprüfen:
    Befehl „git status“
  • Überprüfen Sie, ob „example.txt“ als geänderte oder nicht nachverfolgte Datei aufgeführt ist.

Stagen und Committen der Änderungen:

  • Wenn die Datei als geändert aufgeführt ist, stagen Sie sie für den Commit:
    git add example.txt
  • Committen Sie die Änderungen mit einer entsprechenden Commitnachricht:
    git commit -m "Restored example.txt"