tipos tag repositorio que log etiquetas crear git rename case-sensitive file-rename

tag - Cambio de mayúsculas en los nombres de archivo en Git



que es un repositorio git (8)

Estoy tratando de cambiar el nombre de un archivo para tener mayúsculas diferentes de 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 lanza un ataque sobre esto. Intenté cambiar el nombre usando solo el antiguo comando mv también, pero git no selecciona el cambio de nombre (como cambio de nombre o como un nuevo archivo sin seguimiento).

¿Cómo puedo cambiar un archivo para tener una mayúscula diferente del mismo nombre? Estoy en Mac OS X 10.7.3 con git 1.7.9.1 usando zsh 4.3.15.


A partir de git 2.0.1 (25 de junio de 2014), un git mv solo funcionará en sistemas operativos que no distinguen entre mayúsculas y minúsculas .

Ver commit baa37bf por David Turner ( dturner-tw )

mv : permite que el cambio de nombre arregle 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 el error "el destination already exists ", porque estos dos nombres se refieren a la misma ruta desde el punto de vista del sistema de archivos y requieren que el usuario proporcione " --force "al corregir el caso de la ruta registrada en el índice y en la siguiente confirmación.

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

git mv hello.txt Hello.txt simplemente funciona (ya no se requiere forzar).


A veces quieres cambiar el uso de mayúsculas de muchos archivos en OS X. Los comandos de git mv se cansarán rápidamente, para hacer las cosas un poco más fáciles, esto es lo que hago:

  1. Mueva todos los archivos fuera del directorio para decir el escritorio.
  2. Haz un git add . -A git add . -A para eliminar todos los archivos.
  3. Cambie el nombre de todos los archivos en el escritorio a mayúsculas.
  4. Mueve todos los archivos al directorio original.
  5. Haz un git add . git debería ver que los archivos son renombrados.

Ahora puede hacer una confirmación diciendo que ha cambiado la capitalización de archivos.


Como el OP trata sobre "Cambiar el uso de mayúsculas en los nombres de archivo en Git":

Si está intentando cambiar la capitalización 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 que configuro git correctamente para seleccionar el cambio de nombre.

Por defecto, una plantilla de git está configurada para ignorar mayúsculas y minúsculas (no se distingue entre mayúsculas y minúsculas). Para verificar que tiene la plantilla predeterminada, use --get para recuperar el valor para una clave específica. Use --local y --global para indicar git si desea recoger el valor clave de configuración de su configuración local o global de git repo. Como, un ejemplo si desea buscar su clave global core.ignorecase :

git config --global --get core.ignorecase

Si esto devuelve true asegúrese de configurarlo como:

git config --global core.ignorecase false

(Asegúrese de tener los permisos adecuados para cambiar globalmente) Y ahí lo tienen, ahora su git no ignorará las Capitalizaciones y las tratará como cambios.

Como sugerencia, si está trabajando en proyectos multilingües y cree que no todos los proyectos deben ser tratados como sensibles a mayúsculas y minúsculas por parte de git, solo actualice el core.ignorecase local


Este fragmento de python git mv --force todos los archivos de un directorio sean minúsculas, por ejemplo, foo / Bar.js se convertirá en foo / bar.js a través de git mv foo/Bar.js foo/bar.js --force

Modifícalo a tu gusto, solo pensé que lo compartiría :)

import os import re searchDir = ''c:/someRepo'' exclude = [''.git'', ''node_modules'',''bin''] os.chdir(searchDir) for root, dirs, files in os.walk(searchDir): dirs[:] = [d for d in dirs if d not in exclude] for f in files: if re.match(r''[A-Z]'', f): fullPath = os.path.join(root, f) fullPathLower = os.path.join(root, f[0].lower() + f[1:]) command = ''git mv --force '' + fullPath + '' '' + fullPathLower print(command) os.system(command)


Los nombres de archivos en OS X no distinguen entre mayúsculas y minúsculas (de forma predeterminada). Esto es más un problema de sistema operativo que un problema de git. Si elimina y vuelve a agregar el archivo, debería obtener lo que desea, o cambiarle el nombre a otra cosa y luego volver a cambiarlo.


Para git mv archivos git mv en minúsculas en macOS:

for f in *; do git mv "$f" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done

Se minúsculas todos los archivos en una carpeta.


Puede abrir el directorio ".git" y luego editar el archivo "config". Bajo "[core]" set "ignorecase = true" y listo;)


Teniendo en cuenta las respuestas anteriores, puede hacer que funcione con un solo comando con "--force":

git mv --force myfile MyFile