¿Cómo se cambian las mayúsculas de los nombres de archivos en Git?

Resuelto knpwrs asked hace 12 años • 12 respuestas

Estoy intentando cambiar el nombre de un archivo para que tenga mayúsculas diferentes a las que tenía antes:

git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js

Como puedes ver, Git se enfada por esto. También intenté cambiar el nombre usando solo el mvcomando antiguo, pero Git no detecta el cambio de nombre (como un cambio de nombre o como un nuevo archivo sin seguimiento).

¿Cómo puedo cambiar un archivo para que tenga una mayúscula diferente con el mismo nombre? Estoy en Mac OS X v10.7.3 (Lion) con Git 1.7.9.1 usando Z shell (zsh) 4.3.15.

knpwrs avatar May 10 '12 03:05 knpwrs
Aceptado

A partir de Git 2.0.1 (25 de junio de 2014), a git mvsolo funcionará en un sistema operativo que no distinga entre mayúsculas y minúsculas .

Véase el compromiso baa37bf de David Turner ( dturner-tw) .

mv: permite cambiar el nombre para corregir mayúsculas y minúsculas en sistemas de archivos que no distinguen entre mayúsculas y minúsculas

" git mv hello.txt Hello.txt" en un sistema de archivos que no distingue entre mayúsculas y minúsculas siempre desencadena destination already existsel error " ", porque estos dos nombres se refieren a la misma ruta desde el punto de vista del sistema de archivos y requiere que el usuario proporcione " --force" al corregir el caso de la ruta registrada en el índice y en el próximo compromiso.

Detecte este caso y permítalo sin requerir " --force".

git mv hello.txt Hello.txtsimplemente funciona ( --forceya no es necesario).


La otra alternativa es:

git config --global core.ignorecase false

Y cambie el nombre del archivo directamente; git agregar y confirmar.

Funciona en un CMD. Podría fallar en una sesión de git bash (en Windows) (consulte la respuesta de Louis-Caron )

Como señaló jaquinocode en los comentarios , si su repositorio local tiene esa configuración:

git config --local core.ignorecase false
VonC avatar Jul 27 '2014 08:07 VonC

Teniendo en cuenta la respuesta de Larsk , puede hacerlo funcionar con un solo comando con --force:

git mv --force myfile MyFile
Marcello DeSales avatar Apr 17 '2013 22:04 Marcello DeSales