¿Cuál es la forma correcta de deshacer un cambio de nombre en git, como:
git mv file1 file2
¿Cuál es la forma correcta de deshacer un cambio de nombre en git, como:
git mv file1 file2
Respuestas:
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
git checkout .
no funciona, incluso con la -f
opción?
git checkout -- .
.
fatal: source directory is empty,
solo git reset --hard
funcionó.
Si no ha realizado otros cambios (que desea mantener) desde la última confirmación, puede hacer
git reset --hard
git reset --hard
. Simplemente moverlo hacia atrás me parece una opción más segura.
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
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.
Si accidentalmente renombró una gran cantidad de archivos y desea volver a donde comenzó, elimine todos los archivos renombrados que aparecen como adds
bajo una git status
llamada.
Una vez que elimine todos los archivos modificados, puede ejecutarlos git checkout -- *
para recuperar localmente los nombres de los archivos originales.
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.
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.
git mv file2 file1