3205 Stimmen

Wie man eine gelöschte Datei in einem Git-Repository findet und wiederherstellt

Angenommen, ich befinde mich in einem Git-Repository. Ich lösche eine Datei und übertrage diese Änderung. Ich arbeite weiter und nehme weitere Übertragungen vor. Dann stelle ich fest, dass ich die Datei wiederherstellen muss.

Ich weiß, dass ich eine Datei auschecken kann mit git checkout HEAD^ foo.bar aber ich weiß nicht genau, wann diese Datei gelöscht wurde.

  1. Wie kann ich am schnellsten den Commit finden, der einen bestimmten Dateinamen gelöscht hat?
  2. Wie kann ich diese Datei am einfachsten wieder in meine Arbeitskopie aufnehmen?

Ich hoffe, dass ich meine Protokolle nicht manuell durchsuchen, das gesamte Projekt für einen bestimmten SHA auschecken und diese Datei dann manuell in meinen ursprünglichen Projekt-Checkout kopieren muss.

43 Stimmen

Beachten Sie, dass der vorangegangene Kommentar die Frage im Titel beantwortet, nicht im Hauptteil - das schließt ein, herauszufinden wenn die Datei wurde gelöscht.

14 Stimmen

So finden Sie die Übertragung, in der eine Datei gelöscht wurde: git log --diff-filter=D -- path/to/file

2 Stimmen

1voto

Muhammad Soliman Punkte 18437

Wenn die Löschung nicht bestätigt wurde, stellt der folgende Befehl die gelöschte Datei im Arbeitsbaum wieder her.

$ git checkout -- <file>

Mit dem folgenden Befehl können Sie eine Liste aller gelöschten Dateien im Arbeitsbaum erhalten.

$ git ls-files --deleted

Wenn die Löschung bereits übertragen wurde, suchen Sie die Übertragung, bei der die Löschung stattgefunden hat, und stellen Sie die Datei von dieser Übertragung wieder her.

$ git rev-list -n 1 HEAD -- <file>
$ git checkout <commit>^ -- <file>

Falls Sie nach dem Pfad der wiederherzustellenden Datei suchen, zeigt der folgende Befehl eine Zusammenfassung aller gelöschten Dateien an.

$ git log --diff-filter=D --summary

0voto

Akbor Punkte 992

Ich habe dieses Problem auch, wenn ich den folgenden Code verwende, um eine vorherige Datei in einem lokalen Verzeichnis abzurufen:

git checkout <file path with name>

Das folgende Beispiel funktioniert bei mir:

git checkout resources/views/usaSchools.blade.php

0voto

Eng_Farghly Punkte 924

Sie können gelöschte Dateien auschecken:

git checkout

Ausgabe

D       index.html

Um sie wiederherzustellen:

git restore index.html

Wenn Sie mehrere Dateien gelöscht haben und alle wiederherstellen müssen, verwenden Sie:

git restore .

Siehe Gif-Bild restore files by git

-1voto

kujiy Punkte 5026
$ git log --diff-filter=D --summary  | grep "delete" | sort

-1voto

Charles Duporge Punkte 512

Um alle gelöschten Dateien mit Git wiederherzustellen, können Sie das auch tun:

git checkout $(git ls-files --deleted)

Wo git ls-files --deleted listet alle gelöschten Dateien auf und git checkout $(git command) stellt die Liste der Dateien in einem Parameter wieder her.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X