Estoy tratando de cambiar el nombre de un archivo para tener una capitalización diferente de la 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 enoja con esto. Intenté cambiar el nombre usando solo el mv
comando anterior, pero Git no elige el cambio de nombre (como un cambio de nombre o como un nuevo archivo sin seguimiento).
¿Cómo puedo cambiar un archivo para tener una capitalización diferente del mismo nombre? Estoy en Mac OS X v10.7.3 (Lion) con Git 1.7.9.1 usando Z shell (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
fuente
fuente
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
funcionará en sistemas operativos que no distinguen entre mayúsculas y minúsculas. Vea mi respuesta a continuaciónRespuestas:
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 .Ver commit baa37bf por David Turner (
dturner-tw
) .mv
: permite cambiar el nombre para corregir el caso en los sistemas de archivos insensibles a mayúsculas y minúsculasEl error "
git mv hello.txt Hello.txt
" en un sistema de archivos insensible a mayúsculas y minúsculas siempre "destination already exists
" desencadena , porque estos dos nombres se refieren a la misma ruta desde el punto de vista del sistema de archivos y requieren que el usuario dé "--force
" al corregir el caso de la ruta registrada en el índice y en el siguiente compromisogit mv hello.txt Hello.txt
simplemente funciona (ya no se--force
requiere).La otra alternativa es:
Y cambie el nombre del archivo directamente; git add y commit.
fuente
git config core.ignorecase false
Teniendo en cuenta la respuesta de larsks , puede hacerlo funcionar con un solo comando con "--force":
fuente
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
A veces, desea cambiar la capitalización de muchos nombres de archivo en un sistema de archivos que no distingue entre mayúsculas y minúsculas (por ejemplo, en OS X o Windows). Hacer
git mv
comandos se cansará rápidamente. Para hacer las cosas un poco más fáciles, esto es lo que hago:git add . -A
para eliminar todos los archivos.git add .
. Git debería ver que los archivos cambian de nombre.Ahora puede hacer una confirmación diciendo que ha cambiado la capitalización del nombre del archivo.
fuente
Los nombres de archivo en OS X no distinguen entre mayúsculas y minúsculas (por defecto). Esto es más un problema del sistema operativo que un problema de Git. Si elimina y lee el archivo, debe obtener lo que desea, o cambiarle el nombre a otro y luego cambiarle el nombre.
fuente
git clone
el repositorio en un sistema Linux, cambiar el nombre de los archivos y confirmarlos solo para esta situación (si tiene un sistema Linux a mano).git rm --cached fileorfolder
para eliminar el archivo o la carpeta de git sin eliminar el archivo o la carpeta del sistema de archivos. Luego, simplemente puede agregar el archivo o la carpeta nuevamente congit add fileorfolder
.Establecer
ignorecase
afalse
en git configComo la publicación original trata sobre "Cambiar la capitalización de los nombres de archivo en Git":
Si está intentando cambiar el uso de mayúsculas y minúsculas de un nombre de archivo en su proyecto, no necesita forzar el cambio de nombre desde Git. En mi opinión, preferiría cambiar las mayúsculas de mi IDE / editor y asegurarme de configurar Git correctamente para retomar el cambio de nombre.
Por defecto, una plantilla Git está configurada para ignorar mayúsculas y minúsculas (Git no distingue mayúsculas y minúsculas). Para verificar que tiene la plantilla predeterminada, use
--get
para recuperar el valor de una clave específica. Use--local
y--global
para indicarle a Git si debe elegir un valor-clave de configuración de su configuración de repositorio de Git local o global. Como ejemplo, si desea buscar su clave globalcore.ignorecase
:Si esto vuelve
true
, asegúrese de configurarlo como:(Asegúrese de tener los permisos adecuados para cambiar globalmente). Y ahí lo tiene; ahora su instalación de Git no ignoraría las mayúsculas y las trataría como cambios.
Como sugerencia, si está trabajando en proyectos en varios idiomas y cree que Git no debe tratar todos los proyectos como sensibles a mayúsculas y minúsculas, solo actualice el
core.ignorecase
archivo local .fuente
git config --global --get core.ignorecase
no devuelve nada. ¿Es esotrue
? porque después de configurarlofalse
devuelve falso (Windows 10)git mv
). También estoy asumiendo que, por defecto, se considera verdadero (es decir, está ignorando mayúsculas y minúsculas). O eso, o coincide con la política del sistema operativo para la carcasa del nombre de archivo.Puede abrir el directorio ".git" y luego editar el archivo "config". En el conjunto "[core]", establezca "ignorecase = true" y listo;)
fuente
Para agrupar
git mv
archivos en minúsculas en macOS:En minúscula todos los archivos en una carpeta.
fuente
Este fragmento de Python mostrará
git mv --force
todos los archivos en un directorio en minúsculas. Por ejemplo, foo / Bar.js se convertirá en foo / bar.js a través degit mv foo/Bar.js foo/bar.js --force
.Modifícalo a tu gusto. Solo pensé en compartir :)
fuente
Ejemplo de trabajo:
fuente