Angenommen, Datei1 und Datei2 befinden sich beide im aktuellen Verzeichnis (.). Warum git checkout .funktioniert das dann nicht, selbst mit der -fOption?
Ryenus
9
Es scheint selten, dass die Dinge so intuitiv sind :)
ragerdl
@ryenus Sie müssen verwenden git checkout -- ..
Joseph238
Lol. Das macht Spaß.
Dmitriy Dokshin
Hat bei mir nicht funktioniert und den Fehler gegeben : fatal: source directory is empty,, hat nur git reset --hardden Job gemacht.
mac13k
43
Wenn Sie seit dem letzten Festschreiben keine weiteren Änderungen vorgenommen haben (die Sie beibehalten möchten), können Sie dies tun
Das einzige Problem, das ich mit dieser Antwort hatte, ist, dass Kopien für Datei2 auf der Festplatte hinterlassen wurden.
user52472
9
In meinem Fall habe ich einen ganzen Ordner verschoben und dann festgestellt, dass ich das nicht hätte tun sollen.
Die Antwort von @Dave Konopka hat mir sehr gut gefallen, aber ich hatte mit diesem Ansatz nicht viel Erfolg (vielleicht meine Version von GIT (1.8.4)? Meine Dateien wurden immer noch als gelöscht angezeigt. Ich hatte andere Änderungen auf dem Stapel, die ich nicht wollte verlieren (leider).
Es hängt davon ab, was Sie erreichen möchten. Wenn Sie möchten, dass die Datei so angezeigt wird, als ob sie nie verschoben wurde, können Sie sie vor dem Verschieben zurücksetzen (oder neu erstellen). Wenn Sie sich nicht für die Geschichte interessieren, verschieben Sie sie einfach zurück.
Das erste funktioniert einwandfrei, solange Sie Ihr Commit nicht vorangetrieben haben oder jemand nicht von Ihnen abgezogen hat.
CanSpice
7
Wenn Sie versehentlich eine große Anzahl von Dateien umbenannt haben und zu Ihrem Ausgangspunkt zurückkehren möchten, löschen Sie alle umbenannten Dateien, die addsunter einem git statusAufruf angezeigt werden.
Sobald Sie alle geänderten Dateien gelöscht haben, können Sie sie ausführen git checkout -- *, um die ursprünglichen Dateinamen lokal wiederherzustellen.
git reset HEAD file2
git checkout -- file1
rm file2
Der erste Befehl setzt die Datei2 außer Kraft, hinterlässt jedoch eine Kopie davon. Der zweite Befehl stellt die ursprüngliche Datei wieder her und der dritte löscht die neue Datei.
Der Trick, den ich benutzte, bestand darin, einen Git-Stash durchzuführen, um alle meine Änderungen rückgängig zu machen (einschließlich des Wiederherstellens der mv'd-Dateien), und dann den Stash mit Git-Stash-Drop zu löschen.
git mv file2 file1
Antworten:
Nicht freche Antwort:
Überprüfen Sie die Dokumentation von git mv
quelle
git checkout .
funktioniert das dann nicht, selbst mit der-f
Option?git checkout -- .
.fatal: source directory is empty,
, hat nurgit reset --hard
den Job gemacht.Wenn Sie seit dem letzten Festschreiben keine weiteren Änderungen vorgenommen haben (die Sie beibehalten möchten), können Sie dies tun
quelle
git reset --hard
. Nur rückwärts zu bewegen scheint mir eine sicherere Option zu sein.hat den Trick für mich gemacht
quelle
In meinem Fall habe ich einen ganzen Ordner verschoben und dann festgestellt, dass ich das nicht hätte tun sollen.
Die Antwort von @Dave Konopka hat mir sehr gut gefallen, aber ich hatte mit diesem Ansatz nicht viel Erfolg (vielleicht meine Version von GIT (1.8.4)? Meine Dateien wurden immer noch als gelöscht angezeigt. Ich hatte andere Änderungen auf dem Stapel, die ich nicht wollte verlieren (leider).
Ich hatte Erfolg dabei:
quelle
Es hängt davon ab, was Sie erreichen möchten. Wenn Sie möchten, dass die Datei so angezeigt wird, als ob sie nie verschoben wurde, können Sie sie vor dem Verschieben zurücksetzen (oder neu erstellen). Wenn Sie sich nicht für die Geschichte interessieren, verschieben Sie sie einfach zurück.
quelle
Wenn Sie versehentlich eine große Anzahl von Dateien umbenannt haben und zu Ihrem Ausgangspunkt zurückkehren möchten, löschen Sie alle umbenannten Dateien, die
adds
unter einemgit status
Aufruf angezeigt werden.Sobald Sie alle geänderten Dateien gelöscht haben, können Sie sie ausführen
git checkout -- *
, um die ursprünglichen Dateinamen lokal wiederherzustellen.quelle
Der erste Befehl setzt die Datei2 außer Kraft, hinterlässt jedoch eine Kopie davon. Der zweite Befehl stellt die ursprüngliche Datei wieder her und der dritte löscht die neue Datei.
quelle
Der Trick, den ich benutzte, bestand darin, einen Git-Stash durchzuführen, um alle meine Änderungen rückgängig zu machen (einschließlich des Wiederherstellens der mv'd-Dateien), und dann den Stash mit Git-Stash-Drop zu löschen.
quelle
Weniger beängstigend ist es, auf die oberste Ebene des Repos zu gehen und Folgendes zu tun:
Git zurücksetzen
Git Checkout.
quelle