¿Cómo cambio el nombre de un archivo en git que difiere solo por mayúsculas y minúsculas?


14

En mi proyecto git (Xcode), cometí un nombre de archivo con un caso incorrecto. Ahora fui a tratar de cambiarle el nombre, pero cuando me comprometo, obtengo:

fatal: No agregará el alias de archivo 'MyProject / MyFile.h' ('MyProject / MyFilE.h' ya existe en el índice)

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

Traté de cambiar el nombre de ambos archivos a otra cosa, y lo confirmé, y luego los cambié a lo que quiero, pero aún falla (con el mismo mensaje de error).

Respuestas:


21

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

Mueva su archivo existente a un lado, confirme ese movimiento, luego muévalo de regreso usando el caso que desea que mantenga y confirme. 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"

con el fin de evitar la descomposición del enlace, generalmente le pedimos que copie las partes relevantes de la respuesta detrás del enlace en el cuerpo de la respuesta.
Ian C.

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

1
Sí, entiendo lo que dices, pero la consistencia es agradable.
Ian C.

Extraño. Estaba seguro de que probé esto, pero hoy funciona. Gracias.
Ken

2

Todavía no he encontrado una manera de arreglar esto directamente en un sistema de archivos que no distingue entre mayúsculas y minúsculas, necesita un sistema de archivos sensible a mayúsculas y minúsculas.

Afortunadamente, Mac OS X tiene un buen soporte de montaje de disco virtual, por lo que puede obtener (crear) de manera rápida y fácil un sistema de archivos (temporal) sensible a mayúsculas y minúsculas en su computadora.

Abra la Utilidad de Discos, cree una Nueva Imagen y configure el campo "Formato" en una de las versiones sensibles a mayúsculas y minúsculas de "Mac OS Extended". También asegúrese de hacerlo lo suficientemente grande para su repositorio.

Monte su nuevo disco, revise el repositorio de git en él, asegúrese de que el archivo con el nombre correcto tenga el contenido correcto y elimine el otro. Confirma y empuja tus cambios, y luego puedes desmontar la imagen del disco y eliminarla.

Si no tiene un servidor remoto para clonar (es decir, solo está ejecutando un repositorio git localmente en su disco duro), recuerde que puede clonar directamente desde el otro repositorio git en su disco duro.


1
Eso es muy laborioso. Puede hacerlo sin tener que girar un nuevo sistema de archivos en un archivo de imagen de disco.
Ian C.

1

Paso 1 : simplemente cambie el nombre del archivo con un nombre que sea más diferente (que solo el caso de las letras). Simplemente elija un nombre aleatorio diferente del nombre actual y del nombre que desea asignarle.

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

Paso 3 : cambie el nombre del archivo como deseaba cambiarle el nombre en primer lugar. Entonces, ahora también habrá más diferencia que solo el caso con el nombre anterior.

Paso 4 : confirme el archivo renombrado nuevamente.

No se necesitan trucos de magia. Y puede elegir comprometerse por GUI o CLI.


0

Yo uso sourcetree. Sin usar CLI hay un paso fácil para hacer esto. cambie el nombre del archivo a otro nombre (por ejemplo, Index.php a Index_old.php), luego confirme y presione ... nuevamente cambie el nombre al nombre deseado (index.php), luego confirme y envíe.

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.