Git: Wie finde ich eine gelöschte Datei im Projekt-Commit-Verlauf?
Once upon a time, gab es eine Datei in meinem Projekt möchte ich nun in der Lage zu bekommen.
Das problem ist: ich habe keine Ahnung, Wann habe ich es gelöscht und auf dem Weg war es.
Wie kann ich suchen Sie den commit dieser Datei, wenn Sie existiert?
InformationsquelleAutor der Frage Pedro Morte Rolo | 2011-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht wissen, den genauen Pfad, den Sie verwenden können
Wenn Sie wissen, den Pfad der Datei an, Sie können dies tun:
Dieser sollte eine Liste der änderungen in allen Zweigen, die berührt, die Datei. Dann, finden Sie die version der Datei, die Sie wollen, und zeigen es mit...
Oder es wieder in Ihre Arbeitskopie mit:
git checkout <SHA>^ -- <path-to-file>
Hinweis: das caret-symbol (
^
), die bekommt der Kasse vor , die ein identifiziert, weil in dem moment der<SHA>
commit wird die Datei gelöscht, wir müssen die vorherigen commit, um die gelöschte Datei InhaltInformationsquelleAutor der Antwort Amber
Erhalten eine Liste der gelöschten Dateien, und kopieren Sie den vollständigen Pfad der gelöschten Datei
Führen Sie folgenden Befehl aus, um zu finden, die commit-id des Commits, und kopieren Sie die commit-id
Zeigen diff Datei gelöscht
Denken Sie daran, Sie können die Ausgabe in eine Datei mit
>
wieInformationsquelleAutor der Antwort Fatih
Nicht editieren konnte die akzeptierte Antwort ist also, indem es als Antwort hier,
wiederherstellen der Datei im git, verwenden Sie das folgende (beachten Sie das Zeichen '^' nur nach dem SHA)
InformationsquelleAutor der Antwort Akshay Agarwal
@Bernstein gab die richtige Antwort! Nur noch eine Ergänzung, wenn Sie nicht wissen, den genauen Pfad der Datei, die Sie verwenden können wildcards! Dieser arbeitete für mich.
InformationsquelleAutor der Antwort Petur Subev
Angenommen, Sie möchten eine Datei wiederherstellen, genannt
MyFile
aber unsicher sind, Ihren Weg (oder deren Verlängerung, für diese Angelegenheit):Vorlauf.: Vermeiden Sie Verwirrung, indem Sie verstärkt auf die git root
Eine nicht-triviale Projekt kann mehrere Verzeichnisse mit identischen oder ähnlichen Namen.
Finden Sie den vollständigen Pfad
delete mode 100644 full/path/to/MyFile.js
full/path/to/MyFile.js
ist der Weg & Datei, die Sie suchen.Bestimmen Sie alle commits, die die Datei
bd8374c Some helpful commit message
ba8d20e Another prior commit message affecting that file
cfea812 The first message for a commit in which that file appeared.
Checkout die Datei
Wenn Sie die erste wählen-aufgeführt Begehen (der Letzte chronologisch, hier bd8374c), wird die Datei nicht gefunden werden, da es gelöscht wurde, verpflichten.
Wählen Sie einfach die vorhergehende (hängen Sie ein caret-Zeichen) Begehen:
InformationsquelleAutor der Antwort Calaf
Versuchen Sie es mit einer der Zuschauer, wie
gitk
so dass Sie durchsuchen können, um die Geschichte zu finden, die halb erinnerte Datei. (verwenden Siegitk --all
bei Bedarf für alle Filialen)InformationsquelleAutor der Antwort Philip Oakley
Eines der Dinge, die langweilig ist, ist hier der Pfad der Datei gelöscht, also schrieb ich unten einen einfachen Befehl, wo ein dev oder ein git-Benutzer passieren kann eine gelöschte Datei Namen und bekommen die Geschichte:
Wenn jemand, kann zur Verbesserung der Befehl, bitte nicht.
InformationsquelleAutor der Antwort Jason