Gelöschte Dateien vor dem Commit in Git wiederherstellen

Ankit Raj Goyal 15 Februar 2024
  1. Stellen Sie gelöschte Dateien vor dem Commit mithilfe der Befehle reset und checkout in Git wieder her
  2. Stellen Sie gelöschte Dateien vor dem Commit mithilfe des Befehls git checkout in Git wieder her
  3. Stellen Sie einen Stapel gelöschter Dateien vor dem Commit in Git wieder her
Gelöschte Dateien vor dem Commit in Git wiederherstellen

Wir verwenden die Befehle git checkout und git reset, um gelöschte Dateien vor dem Commit wiederherzustellen. Git bietet uns leistungsstarke Optionen, um mit diesen Befehlen komplexe Aufgaben zu erledigen.

Wir können entweder die gelöschte Datei zuerst aus der Staging-Umgebung entfernen und sie dann in einem separaten Schritt im Arbeitsbaum wiederherstellen. Alternativ können wir die beiden Operationen in einem Schritt kombinieren.

Dieses Tutorial zeigt einen cleveren Trick, um mehrere Dateien mit einem einzigen Befehl stapelweise wiederherzustellen.

Stellen Sie gelöschte Dateien vor dem Commit mithilfe der Befehle reset und checkout in Git wieder her

Lassen Sie uns zunächst ein Repository einrichten und einige Dateien hinzufügen. Es sieht aus wie das:

Initial Repo Before Deletes

Unsere ersten paar Commits sehen im Log so aus:

Erste Repo-Commits

Wir löschen nun eine Datei mit dem Befehl rm.

git rm file7.txt

Die gelöschte Datei file7.txt ist nicht mehr in unserem Repository vorhanden.

Datei löschen

Das Standardverhalten von rm besteht darin, die Löschänderungen automatisch bereitzustellen.

Löschen von rm Autostages

Wir fahren jetzt mit der Wiederherstellung der gelöschten Datei fort, bevor wir sie festschreiben.

Zuerst machen wir die Löschung mit dem Befehl reset rückgängig.

git reset <commit_hash> [--] <path_to_file>

Dieser Befehl stellt den Index auf den Zustand des commit_hash für alle Dateien wieder her, die mit dem Parameter path_to_file übereinstimmen.

git reset HEAD --file7.txt

Dies stellt den Index auf HEAD für file7.txt wieder her. HEAD zeigt auf unseren letzten Commit.

Denken Sie daran, dass wir die Löschung nicht festgeschrieben haben, daher enthält unsere letzte Festschreibung keinen Löscheintrag.

Im Wesentlichen verwenden wir diesen Befehl, um gelöschte Dateien rückgängig zu machen.

Git Unstage-Änderung zurücksetzen

Gelöschte Datei aus der Bereitstellung entfernen

Als nächstes stellen wir die gelöschte Datei im Arbeitsbereich mit dem Befehl git checkout wieder her.

git checkout [--] <path_to_file>

checkout überschreibt Inhalte im Arbeitsbaum mit dem Index in dieser Form.

git checkout -- file7.txt

Git gelöschte Datei 2 Schritte wiederherstellen

Stellen Sie gelöschte Dateien vor dem Commit mithilfe des Befehls git checkout in Git wieder her

Der Befehl git checkout stellt uns ein Formular zur Verfügung, in dem wir die beiden obigen Schritte zu einem kombinieren können.

git checkout <commit> [--] <path_to_file>

In dieser Form überschreibt git checkout Inhalte sowohl im Index- als auch im Arbeitsbereich mit Commit.

git checkout HEAD -- file7.txt

HEAD zeigt auf unseren letzten Commit. Wir haben die Löschung nicht festgeschrieben, daher kennt unsere letzte Festschreibung die Löschoperation nicht.

Git Undelete Single Step Checkout

Stellen Sie einen Stapel gelöschter Dateien vor dem Commit in Git wieder her

Was wäre, wenn wir eine Reihe von Dateien gelöscht und nicht festgeschrieben hätten? Angenommen, wir haben 1000 Dateien gelöscht und möchten sie jetzt alle wiederherstellen.

Mehrere Dateien löschen

Die obigen Befehle 1000 Mal einzugeben, ist nicht die Art eines Programmierers, Dinge zu tun. Stattdessen können wir Platzhalter in den Pfadbezeichnern verwenden, um viele Dateien abzugleichen und sie mit einem einzigen Befehl wiederherzustellen.

git reset HEAD .

Dies ist derselbe Befehl wie oben, außer dass wir file7.txt durch das . ersetzt haben. Platzhalter. Der . weist git an, alle Dateien abzugleichen.

Dieser Befehl bringt also alle unsere gelöschten Dateien aus der Staging-Phase. Wir restaurieren sie dann im Arbeitsbereich.

git checkout .

Derselbe Befehl mit file7.txt wird wieder durch das . ersetzt. Platzhalter. Es stellt alle nicht inszenierten Löschungen auf einmal wieder her.

Batch-Wiederherstellung von Löschungen

Alle gelöschten Dateien wiederhergestellt

Verwandter Artikel - Git Restore