Annulla git mv (rinomina)


139

Qual è il modo giusto per annullare una rinomina in git, come:

git mv file1 file2

21
Risposta git mv file2 file1
impertinente

@CanSpice: questa è la risposta corretta; niente di sfacciato.
CB Bailey

1
@Charles: Bene, l'ho fornito come una risposta non sfacciata. :-)
CanSpice

git mv file2 file1 Ti aspettavi qualcos'altro?
Lakshman Prasad,

Risposte:


230

Risposta non sfacciata:

git mv file2 file1

Aggiorna automaticamente l'indice per i percorsi vecchi e nuovi.

Controlla la documentazione di git mv


4
supponiamo che file1 e file2 siano entrambi nella directory corrente (.), quindi perché git checkout .non funziona, anche con l' -fopzione?
reno

9
Sembra raro che le cose siano così intuitive :)
ragerdl,

@ryenus Devi usare git checkout -- ..
Joseph238,

Lol. È divertente.
Dmitriy Dokshin

Non ha funzionato per me dando l'errore fatal: source directory is empty,:, ha git reset --hardfatto solo il lavoro.
mac13k,

43

Se non hai apportato altre modifiche (che desideri conservare) dall'ultimo commit, puoi farlo

git reset --hard

6
Non vorrei prendere l'abitudine di usare git reset --hard. Spostarlo all'indietro mi sembra un'opzione più sicura.
osa,

4
Ha funzionato per me. Volevo annullare un "git mv" che 1) non era ancora stato commesso, e 2) non avevo altri chages
Ed of the Mountain

Se hai altre modifiche che desideri mantenere, ciò le distruggerà tutte.
user151841

13
git reset HEAD file2

ha fatto il trucco per me


1
L'unico problema che ho avuto con questa risposta è che ha lasciato copie per file2 su disco.
user52472

9

Nel mio caso, ho spostato un'intera cartella, quindi ho capito che non avrei dovuto.

Mi è piaciuta molto la risposta di @Dave Konopka, ma non ho avuto molto successo con questo approccio (forse la mia versione di GIT (1.8.4)? I miei file erano ancora mostrati come eliminati. Avevo altre modifiche nello stack che non volevo perdere (purtroppo).

Ho avuto successo facendo questo:

git reset moved_folder
git checkout original_folder

8

Dipende da cosa vuoi realizzare. Se si desidera che appaia come se il file non fosse mai stato spostato, è possibile reimpostare (o rifare) a prima dello spostamento. Se non ti interessa la storia, spostala indietro.


4
Il primo funziona bene fintanto che non hai spinto il tuo impegno o qualcuno non si è ritirato da te.
CanSpice,

7

Se hai rinominato accidentalmente un numero elevato di file e desideri tornare al punto di partenza, elimina tutti i file rinominati che compaiono come addsin una git statuschiamata.

Dopo aver eliminato tutti i file modificati, è possibile eseguire git checkout -- *per recuperare localmente i nomi dei file originali.


4
git reset HEAD file2
git checkout -- file1
rm file2

Il primo comando sblocca file2 ma ne lascia una copia. Il secondo comando ripristina il file originale e il terzo elimina il nuovo file.


1

Il trucco che ho usato è stato fare una scorta git per annullare tutte le mie modifiche (che include il ripristino dei file mv'd) e quindi eliminare la scorta con git stash drop.


0

Meno spaventoso è andare al livello superiore del repository e fare:

git reset
git checkout.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.