15 votos

¿Cómo puedo cambiar el nombre de un archivo en git que difiere sólo por el caso?

En mi proyecto de git (Xcode), confirmé un nombre de archivo con mayúsculas y minúsculas incorrectas. Ahora fui a tratar de cambiar el nombre, pero cuando me comprometo, me sale:

fatal: No se añade el alias de archivo 'MiProyecto/MiArchivo.h' ('MiProyecto/MiArchivo.h' ya existe en el índice)

Estoy seguro de que esto se debe a que git no está acostumbrado a funcionar en un sistema de archivos que preserva las mayúsculas y minúsculas como HFS+. Pero, ¿cómo puedo evitarlo?

Intenté cambiar el nombre de ambos archivos a otra cosa, y lo confirmé, y luego volví a cambiarlos a lo que quería, pero sigue fallando (con el mismo mensaje de error).

24voto

Travis Puntos 208

Como se preguntó y respondió en stackoverflow Pero hay una forma más fácil de hacerlo que no implica crear un nuevo sistema de archivos en un archivo de imagen de disco:

Mueve tu archivo existente a un lado, confirma ese movimiento, luego vuelve a moverlo usando el caso que te gustaría mantener y confirma. Hecho.

Ejemplo:

mv foo foo2
git add -A
git commit -m "renaming"
mv foo2 FOO
git add -A
git commit --amend -m "renamed foo to FOO"

0 votos

Para evitar que los enlaces se pierdan, solemos pedirle que copie en el cuerpo de la respuesta las partes relevantes que se encuentran detrás del enlace.

0 votos

Gracias @ian-c. Esperaba que esta regla no se aplicara a los enlaces dentro de la familia stackexchange.

1 votos

Sí, entiendo lo que dices pero la coherencia es buena.

3voto

Paso 1 : Sólo cambiar el nombre de el archivo con un nombre que es más diferentes (que sólo el caso de las letras.) Sólo tienes que elegir un nombre al azar diferente del nombre actual y del nombre que quieres darle.

Paso 2 : comprometerse este archivo por GUI (Xcode) o por CLI (Terminal)

Paso 3 : cambiar el nombre de el archivo como querías renombrarlo en primer lugar. Así que ahora, también habrá más diferencia que el caso con el nombre anterior.

Paso 4 : comprometerse el archivo renombrado de nuevo.

No se necesitan trucos de magia. Y usted puede elegir para confirmar por GUI o CLI.

2voto

Shuft Puntos 420

Todavía no he encontrado una forma de arreglar esto directamente en un sistema de archivos que no distinga entre mayúsculas y minúsculas, necesitas un sistema de archivos que distinga entre mayúsculas y minúsculas.

Por suerte, Mac OS X tiene un buen soporte de montaje de discos virtuales, por lo que puede obtener (hacer) rápidamente un sistema de archivos (temporal) sensible a las mayúsculas y minúsculas en su ordenador.

Abre la Utilidad de Discos, haz una Nueva Imagen y pon en el campo "Formato" una de las versiones de "Mac OS Extended" que distingue entre mayúsculas y minúsculas. Asegúrate también de que es lo suficientemente grande para tu repositorio.

Monta tu nuevo disco, revisa el repositorio git en él, asegúrate de que el archivo con el nombre correcto tiene el contenido correcto, y elimina el otro. Confirme y empuje sus cambios, y luego puede desmontar la imagen del disco y eliminarla.

Si no tienes un servidor remoto desde el que clonar (es decir, sólo estás ejecutando un repositorio git localmente en tu disco duro), recuerda que puedes clonar directamente desde el otro repositorio git en tu disco duro.

1 votos

Eso requiere mucho trabajo. Puedes hacerlo sin tener que crear un nuevo sistema de archivos en un archivo de imagen de disco.

0voto

forresthopkinsa Puntos 101

Utilizo sourcetree. Sin usar CLI hay un paso fácil para hacer esto. cambiar el nombre del archivo a otro nombre(por ejemplo Index.php a Index_old.php) luego confirmar y empujar .. de nuevo cambiar el nombre al nombre deseado (index.php) luego confirmar y enviar.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X