Deshacer git mv (renombrar)


139

¿Cuál es la forma correcta de deshacer un cambio de nombre en git, como:

git mv file1 file2

21
Respuesta descarada:git mv file2 file1
CanSpice

@CanSpice: Esa es la respuesta correcta; nada descarado al respecto.
CB Bailey

1
@Charles: Bueno, entonces, lo he proporcionado como una respuesta adecuada y no descarada. :-)
CanSpice

git mv file2 file1 ¿Esperaba algo más?
Lakshman Prasad

Respuestas:


230

Respuesta no descarada:

git mv file2 file1

Actualiza el índice de las rutas antiguas y nuevas automáticamente.

Consulte la documentación de git mv


44
supongamos que file1 y file2 están ambos en el directorio actual (.), entonces ¿por qué git checkout .no funciona, incluso con la -fopción?
ryenus

9
Parece raro que las cosas sean tan intuitivas como esto :)
ragerdl

@ryenus Tienes que usar git checkout -- ..
Joseph238

Jajaja Eso es gracioso.
Dmitriy Dokshin

No funcionó para mí dando el error: fatal: source directory is empty,solo git reset --hardfuncionó.
mac13k

43

Si no ha realizado otros cambios (que desea mantener) desde la última confirmación, puede hacer

git reset --hard

66
No me gustaría tener el hábito de usar git reset --hard. Simplemente moverlo hacia atrás me parece una opción más segura.
osa

44
Trabajó para mi. Quería deshacer un "git mv" que 1) aún no se había cometido, y 2) no tenía otros cambios
Ed of the Mountain

Si tiene otros cambios que desea conservar, esto los destruirá a todos.
user151841

13
git reset HEAD file2

hizo el truco para mí


1
El único problema que tuve con esta respuesta es que dejó copias para el archivo 2 en el disco.
user52472

9

En mi caso, moví una carpeta completa, luego me di cuenta de que no debería haberlo hecho.

Realmente me gustó la respuesta de @Dave Konopka, pero no tuve mucho éxito con ese enfoque (¿tal vez mi versión de GIT (1.8.4)? Mis archivos aún se mostraban como eliminados. Tenía otros cambios en la pila que no quería) perder (desafortunadamente)

Tuve éxito haciendo esto:

git reset moved_folder
git checkout original_folder

8

Depende de lo que quieras lograr. Si desea que aparezca como si el archivo nunca se hubiera movido, puede restablecerlo (o cambiarlo) antes de moverlo. Si no le importa la historia, simplemente muévala hacia atrás.


44
El primero funciona bien siempre y cuando no haya presionado su compromiso, o alguien no se haya retirado de usted.
CanSpice

7

Si accidentalmente renombró una gran cantidad de archivos y desea volver a donde comenzó, elimine todos los archivos renombrados que aparecen como addsbajo una git statusllamada.

Una vez que elimine todos los archivos modificados, puede ejecutarlos git checkout -- *para recuperar localmente los nombres de los archivos originales.


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

El primer comando desentierra el archivo2 pero deja una copia del mismo. El segundo comando restaura el archivo original y el tercero elimina el nuevo archivo.


1

El truco que utilicé fue hacer un alijo git para deshacer todos mis cambios (que incluye la restauración de los archivos mv'd) y luego eliminar el alijo con git stash drop.


0

Menos aterrador es ir al nivel superior del repositorio y hacer:

git reset
git checkout.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.