Git mv rückgängig machen (umbenennen)

138

Was ist der richtige Weg, um eine Umbenennung in git rückgängig zu machen?

git mv file1 file2
jrdioko
quelle
21
Freche Antwort:git mv file2 file1
CanSpice
@CanSpice: Das ist die richtige Antwort; nichts freches daran.
CB Bailey
1
@ Charles: Na dann habe ich es als richtige, nicht freche Antwort geliefert. :-)
CanSpice
git mv file2 file1 Sie haben noch etwas erwartet?
Lakshman Prasad

Antworten:

229

Nicht freche Antwort:

git mv file2 file1

Aktualisiert den Index für alte und neue Pfade automatisch.

Überprüfen Sie die Dokumentation von git mv

CanSpice
quelle
4
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

git reset --hard
Klas Mellbourn
quelle
6
Ich würde es mir nicht zur Gewohnheit machen wollen git reset --hard. Nur rückwärts zu bewegen scheint mir eine sicherere Option zu sein.
osa
4
Hat für mich gearbeitet. Ich wollte ein "git mv" rückgängig machen, das 1) noch nicht begangen wurde und 2) ich keine anderen Chages hatte
Ed of the Mountain
Wenn Sie andere Änderungen behalten möchten, werden alle zerstört.
user151841
13
git reset HEAD file2

hat den Trick für mich gemacht

zbig
quelle
1
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).

Ich hatte Erfolg dabei:

git reset moved_folder
git checkout original_folder
zedd45
quelle
8

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.

William Pursell
quelle
4
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.

Dave Konopka
quelle
4
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.

Kamaraju Kusumanchi
quelle
1

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.

sieben Kontinente
quelle
0

Weniger beängstigend ist es, auf die oberste Ebene des Repos zu gehen und Folgendes zu tun:

Git zurücksetzen
Git Checkout.

w0mbat
quelle