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".

Dick Colt
quelle
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.

Cascabel
quelle
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

Šimon Tóth
quelle
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
Amit
quelle
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 .

rzskhr
quelle
2

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

meagar
quelle
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 !!

Mona Wade
quelle