2011-02-04 17 views
92

Qual è il modo giusto per annullare una ridenominazione in git, come: rispostaUndo git mv (rinominare)

git mv file1 file2 
+13

Risposta sfacciata: 'git mv file2 file1' – CanSpice

+0

@CanSpice: Questa è la risposta corretta; niente sfacciato a riguardo. –

+1

@Charles: beh, l'ho fornito come risposta corretta e non sfacciata. :-) – CanSpice

risposta

148

non sfacciato:

git mv file2 file1 
+4

supponiamo che file1 e file2 siano entrambi nella directory corrente (.), Quindi perché 'git checkout .' non funziona, anche con l'opzione' -f'? – ryenus

+5

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

+0

@ryenus Devi usare 'git checkout - .'. – Joseph238

8

Dipende da cosa si vuole realizzare . Se si desidera che appaia come se il file non fosse mai stato spostato, è possibile reimpostare (o rebase) di nuovo prima dello spostamento. Se non ti importa della storia, allora spostala indietro.

+4

Prima di tutto funziona bene fino a quando non hai premuto il commit, o qualcuno non ti ha tirato fuori. – CanSpice

6

Se si è rinominato accidentalmente un numero elevato di file e si desidera tornare al punto di partenza, eliminare tutti i file rinominati visualizzati come adds in una chiamata git status.

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

28

Se avete fatto altre variazioni (che si desidera mantenere) dall'ultima commit, si può fare

git reset --hard 
+3

Non vorrei abituarmi ad usare 'git reset --hard'. Spostarlo all'indietro sembra un'opzione più sicura per me. – osa

+3

ha funzionato per me. Volevo annullare un "git mv" che 1) non era stato ancora eseguito, e 2) Non avevo altri ganci –

8

Nel mio caso, ho spostato un'intera cartella, poi si rese conto che non avrei dovuto.

Mi è veramente piaciuta 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 sono ancora mostrati come eliminati. Ho avuto altri cambiamenti nello stack che ho . non voleva perdere (purtroppo)

ho avuto successo facendo questo:

git reset moved_folder 
git checkout original_folder 
+0

THANKS @ zedd45 !! –

5
git reset HEAD file2 

ha fatto il trucco per me

+0

non è questa la risposta corretta dovrebbe essere? – ssudaraka

+0

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

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

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