Git - löschte einige Dateien lokal, wie bekomme ich sie aus einem Remote-Repository


109

Ich habe einige Dateien auf meinem PC gelöscht. Wie lade ich sie erneut herunter?

Pull sagt: "Schon aktuell".


1
Sie müssen sie nicht "erneut herunterladen", da der gesamte Repository-Verlauf lokal vorhanden ist, wenn Sie Git verwenden.
CDhowie

Weißt du, wie man sie von Einheimischen bekommt?
Charlie Parker

Antworten:


162

Da git ein verteiltes VCS ist, enthält Ihr lokales Repository alle Informationen. Es ist kein Download erforderlich. Sie müssen nur den gewünschten Inhalt aus dem Repo extrahieren.

Wenn Sie die Löschung nicht festgeschrieben haben, überprüfen Sie einfach die Dateien aus Ihrer aktuellen Festschreibung:

git checkout HEAD <path>

Wenn Sie die Löschung festgeschrieben haben, müssen Sie die Dateien aus einer Festschreibung auschecken, die sie enthält. Vermutlich wäre es das vorherige Commit:

git checkout HEAD^ <path>

Wenn es sich jedoch um nCommits handelt, verwenden Sie es HEAD~noder gitkstarten Sie es einfach , suchen Sie den SHA1 des entsprechenden Commits und fügen Sie ihn ein.


2
Nur als Nebenkommentar funktioniert dies auch für ein vollständiges Verzeichnis, das nicht speziell oder spezifisch für eine einzelne Datei ist (es hat funktioniert, als ich es zumindest ausprobiert habe). Danke übrigens.
Charlie Parker

5
NB das <path>ist obligatorisch, auch wenn nur .Punkt für das aktuelle Verzeichnis. Der "Zweig" ( HEADim obigen Beispiel) ist jedoch optional. Wie bei so vielen Git-Befehlen ist weder die Ausgabe noch die Hilfe hilfreich.
MarkHu

39

git checkout filename

git reset --hard könnte den Trick auch tun


9
Wenn Sie die git reset --hardMethode verwenden, wird der gesamte Baum auf den Ort zurückgesetzt, an dem Sie HEAD / HEAD ^ / HEAD ~ n platziert haben, und dies wird ohne Vorurteile
geschehen

Git Checkout Dateiname war die Antwort für mich :)
Ruub

Git Checkout Dateiname erstellt nur eine leere Datei
mrek

in den gewünschten Ordner gelegt und hat git checkount .wie ein Zauber funktioniert!
Hzitoun

21

Wenn Sie mehrere Dateien lokal gelöscht, aber nicht festgeschrieben haben, können Sie das Auschecken erzwingen

$ git checkout -f HEAD

Wie wir aus der Ausgabe "Bereits aktuell" sehen, hat die Person, die diese Frage stellt, in letzter Zeit nichts begangen. Sollten Sie vielleicht angeben, dass git checkout -f HEAD GEFÄHRLICH ist? Da möglicherweise lokale Änderungen rückgängig gemacht werden, die nicht festgeschrieben wurden (das Wiederherstellen vorheriger Dateien ist das positive Ergebnis, das Verlieren von Änderungen an bearbeiteten Dateien das negative Ergebnis).
Lionel Trebuchon

15

Wenn Sie mehrere Dateien lokal gelöscht und die Änderungen nicht festgeschrieben haben, wechseln Sie zu Ihrem lokalen Repository-Pfad, öffnen Sie die Git-Shell und geben Sie ein.

$ git checkout HEAD .

Alle vor dem letzten Commit gelöschten Dateien werden wiederhergestellt.

Hinzufügen von "." stellt alle gelöschten Dateien im aktuellen Repository auf ihren jeweiligen Pfaden wieder her.

Weitere Informationen finden Sie in der Dokumentation .


2

Sie müssen eine frühere Version auschecken, bevor Sie die Dateien löschen. Versuchen Sie git checkout HEAD^, die letzte Revision auszuchecken.


0

Außerdem füge ich die folgenden Schritte hinzu, damit das Git-Repo korrekt mit der IDE verknüpft wird:

 $ git reset <commit #>

 $ git checkout <file/path>

Ich hoffe das war hilfreich !!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.