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.