Ich habe einige Dateien gelöscht.
Ich habe mich noch NICHT verpflichtet.
Ich möchte meinen Arbeitsbereich zurücksetzen, um die Dateien wiederherzustellen.
Ich habe a git checkout .
.
Die gelöschten Dateien fehlen jedoch noch.
Und git status
zeigt:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
Warum wird git checkout .
der Arbeitsbereich nicht zurückgesetzt HEAD
?
git checkout .
hätte dies einwandfrei funktioniert.Antworten:
Die Ausgabe sagt Ihnen, was Sie tun müssen.
git reset HEAD cc.properties
usw.Dadurch wird die rm-Operation aufgehoben. Danach wird ein Laufen
git status
werden Sie wieder sagen , dass Sie ein tun müssen , umgit checkout -- cc.properties
die Datei wieder zu bekommen.Update: Ich habe dies in meiner Konfigurationsdatei
was ich normalerweise benutze, um Sachen zu inszenieren.
quelle
git reset HEAD \*
und danngit checkout -- .
rm -r ./engines
- Hoppla. Jetztgit reset engines; git checkout engines
.Sie haben die Löschung so inszeniert, dass Sie Folgendes tun müssen:
git checkout .
checkt nur aus dem Index aus, in dem die Löschung bereits durchgeführt wurde.quelle
Mach einfach
git checkout path/to/file-I-want-to-bring-back.txt
quelle
error: pathspec 'file.ext' did not match any file(s) known to git.
git status
sagt dazu?git checkout HEAD -- file.ext
half bei der Wiederherstellung.So stellen Sie alle nicht bereitgestellten Löschvorgänge automatisch auf einmal wieder her, ohne jeden einzelnen Pfad anzugeben:
So stellen Sie alle bereitgestellten Löschvorgänge automatisch auf einmal wieder her, ohne jeden einzelnen Pfad anzugeben:
quelle
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
wird funktionieren.Da Sie a ausführen, scheint
git checkout .
es, als würden Sie versuchen, Ihren Zweig auf den letzten Festschreibungsstatus zurückzusetzen.Sie können dies mit einem erreichen
git reset HEAD --hard
Warnung
Wenn Sie dies tun, werden möglicherweise alle Ihre neuesten Änderungen entfernt und Ihre Änderungen aufgehoben, z. B. können Sie Arbeit verlieren. Es kann sein, was Sie wollen, aber lesen Sie die Dokumente , um sicherzugehen.
quelle
wenn du benutzt hast
um dann eine Datei zu löschen
funktioniert nicht, also in diesem Fall
sollte arbeiten
quelle
git checkout HEAD^ path/to/filename
arbeitete für mich, da ich die Datei nicht festgeschrieben hatte.Hier ist der Befehl, der mir auf meinem Mac geholfen hat. Ich habe einige der anderen Lösungen ausprobiert, aber sie haben bei mir nicht funktioniert.
Git-Version unter OSX Mavericks
Befehl
quelle
quelle
Verwenden Sie
git ls-files
zur Kasse gelöscht (-d) oder geändert (-m) Dateien.Siehe Wie kann ich nur die geänderten Dateien an einer Git-Kasse wiederherstellen?
quelle
git ls-files -d | xargs -I{} git checkout "{}"
.Wenn Sie alle Dateien auf einmal wiederherstellen möchten
Denken Sie daran, den Punkt zu verwenden, da er git anweist, alle Dateien abzurufen.
Dieser Befehl setzt den Kopf zurück und hebt alle Änderungen auf:
Führen Sie dann Folgendes aus, um alle Dateien wiederherzustellen:
Wenn Sie dann einen Git-Status ausführen, erhalten Sie:
quelle
Sie können Sie sehen wollen , diese
Das gilt für Fälle, in denen Sie verwendet haben
bevor Sie etwas begehen.
Möglicherweise möchten Sie auch erstellte Dateien entfernen, die noch nicht erstellt wurden. Und du willst sie nicht. Mit:
quelle
git checkout -- .
hilft es nicht, gelöschte Dateien wiederherzustellen, und entspricht dem, was der Fragesteller versucht hat :git checkout .
. Der Teil, der funktionieren kann, ist der, den Sie nicht kopiert haben :git checkout <file_path>
.Ich habe diesen Beitrag gefunden, als ich nach Antworten zum Löschen einer Datei gesucht habe, die nach dem Zusammenführen aus einem anderen Zweig in meinem Arbeitsverzeichnis gelöscht wurde. Nach dem Zusammenschluss wurde noch kein Commit durchgeführt. Da es sich um eine laufende Zusammenführung handelt, konnte ich sie nicht einfach wieder hinzufügen, indem ich:
Ich musste zusätzlich zum Zurücksetzen einen weiteren Schritt ausführen, um die Datei zurückzubringen:
quelle
Wenn Sie keine Änderungen festgeschrieben haben, müssen Sie diese Änderungen nur aufbewahren, und Sie kehren zum letzten festgeschriebenen Festschreiben zurück.
quelle
wenn Sie nach einem gelöschten Verzeichnis suchen.
quelle
Hier sind verschiedene Fälle als Referenz, um anderen zu helfen:
Wenn das Löschen nicht festgeschrieben wurde , stellt der folgende Befehl die gelöschte Datei im Arbeitsbaum wieder her.
Mit dem folgenden Befehl können Sie eine Liste aller gelöschten Dateien im Arbeitsbaum abrufen.
Wenn das Löschen festgeschrieben wurde , suchen Sie das Festschreiben dort, wo es stattgefunden hat, und stellen Sie die Datei aus diesem Festschreiben wieder her.
Es sollte Ihnen etwas geben wie
c46e81aa403ecb8a0f7a323a358068345
: Verwenden Sie jetzt commit # hierSo etwas wie das: $ git checkout c46e81aa403ecb8a0f7a323a358068345 -
Wenn Sie nach dem Pfad der wiederherzustellenden Datei suchen, zeigt der folgende Befehl eine Zusammenfassung aller gelöschten Dateien an.
Wenn Sie nur die Liste der Dateien anzeigen möchten:
quelle
Für mich hat funktioniert
git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Zum Beispiel
git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(wird in dem Zweig ausgeführt, in den die Datei gehen soll)
Nachdem dieser Befehl ausgeführt wurde, befindet sich die wiederhergestellte Datei am ursprünglichen Speicherort (der festgeschrieben werden muss).
quelle
git checkout master path/to/the/file.bin
damit Sie diese Datei einfach wiederherstellen, ohne andere Änderungen zu verlieren, die Sie möglicherweise vorgenommen haben. PS: Dies sollte die akzeptierte Antwort sein ...Wenn Sie ToroiseGIT installiert haben, wählen Sie einfach den Menüpunkt "Zurücksetzen ..." für das Popup-Menü des übergeordneten Ordners.
quelle
1.Finden Sie das bestimmte Commit, zu dem Sie zurückkehren möchten, indem Sie Folgendes verwenden:
2.Rechten Sie auf dieses Commit mit:
Jetzt würde Ihre lokale Niederlassung insbesondere alle Dateien haben
quelle
VORSICHT: Legen Sie alle Arbeiten fest, die Sie zuerst behalten möchten.
Sie können Ihren Arbeitsbereich zurücksetzen (und die gelöschten Dateien wiederherstellen).
quelle
./*
../*
durch Bash erweitert wird, um mit diesen Dateien übereinzustimmen, bevor es an Git gesendet wird.Ich hatte das gleiche Problem, aber keine der oben genannten Lösungen funktionierte für mich. Am Ende habe ich Folgendes getan:
- eine leere Datei mit demselben Namen erstellen
- diese Datei mit ihrem lokalen Verlauf vergleichen
- den Verlauf in eine leere Datei kopieren.
quelle
Ich hatte das gleiche Problem und keine der Antworten, die ich hier versuchte, funktionierte auch für mich. Ich verwende Intellij und habe einen neuen Zweig ausgecheckt
git checkout -b minimalExample
, um ein "minimales Beispiel" für den neuen Zweig eines Problems zu erstellen , indem ich eine Reihe von Dateien gelöscht und eine Reihe anderer im Projekt geändert habe . Obwohl ich keine der Änderungen im neuen Zweig "Minimales Beispiel" festgeschrieben habe, waren leider alle Änderungen und Löschungen im Zweig "Minimales Beispiel" im Zweig "Minimales Beispiel" im " ursprünglicher "Zweig auch (oder so schien es). Gemäßgit status
den gelöschten Dateien waren gerade aus beiden Filialen verschwunden.Obwohl Intellij mich gewarnt hatte, dass das Löschen dieser Dateien möglicherweise nicht vollständig wiederhergestellt werden kann, konnte ich sie glücklicherweise wiederherstellen (in dem minimalen Beispielzweig, aus dem sie tatsächlich gelöscht wurden), indem ich mit der rechten Maustaste auf das Projekt klickte und Lokaler Verlauf auswählte > Verlauf anzeigen (und dann das zuletzt gewünschte Verlaufselement wiederherstellen). Nachdem Intellij die Dateien im Zweig "Minimales Beispiel" wiederhergestellt hatte, schob ich den Zweig zum Ursprung. Dann wechselte ich zurück zu meinem "ursprünglichen" lokalen Zweig und lief
git pull origin minimalExample
, um sie auch wieder in den "ursprünglichen" Zweig zu bringen.quelle