¿Cómo se cambian las mayúsculas de los nombres de archivos en Git?
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 mv
comando 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.
A partir de Git 2.0.1 (25 de junio de 2014), a git mv
solo 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 exists
el 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.txt
simplemente funciona ( --force
ya 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
Teniendo en cuenta la respuesta de Larsk , puede hacerlo funcionar con un solo comando con --force
:
git mv --force myfile MyFile