Sensibilidad a mayúsculas y minúsculas en Git

82

Me he encontrado con un problema con git. Básicamente, lo puse en falso core.ignorecaseporque quería cambiar el caso de los nombres de algunas carpetas (ya que estoy en OSX con un sistema de archivos que no distingue entre mayúsculas y minúsculas, los cambios no se mostraban de otra manera). Cuando extraje mis datos, noté que ahora cada carpeta renombrada aparece dos veces en el repositorio, con el nombre antiguo y el nuevo. No sé qué hacer para eliminar las carpetas antiguas, ya que no aparecen localmente (he intentado volver a establecerlo core.ignorecaseen verdadero, pero no está ayudando).

entropido
fuente
1
Tal vez pueda crear un sistema de archivos ext3 sobre una imagen, montarlo y extraer este sistema de archivos que distingue entre mayúsculas y minúsculas.
André Puel
@ AndréPuel bueno, de hecho estaba buscando algo 'más fácil'. : P pero gracias por el consejo, lo haré si no encuentro otras soluciones.
entropido

Respuestas:

123

Puede ser una solución alternativa similar a este comentario en un problema de msysgit (para otro sistema operativo que no distingue entre mayúsculas y minúsculas: Windows).

Me he encontrado con este mismo problema. Refactorizó el nombre de un paquete en Eclipse y el cambio a una compilación anterior se rompió debido a que el nombre de la carpeta no se revirtió. Estoy usando Windows 7, Git 1.7.0.2.msysgit.0

Mi carpeta fue renombrada en Windows a " folder" pero se mostró como " Folder" en Git.
Solucioné el problema cambiando el nombre a " Folder" en Windows y luego ejecuté:

git mv "Folder" "Folder2"
git mv "Folder2" "folder"

Tenga en cuenta que desde git 2.0.1 (junio de 2014),git mv Folder folder debería funcionar!

Consulte " Git: Cambiar el uso de mayúsculas en los nombres de archivo ".

VonC
fuente
1
Me di cuenta de que al cambiar el nombre de esta manera, el segundo cambio de nombre puede tomar un muuucho tiempo. La respuesta es tener paciencia; la carpeta eventualmente cambiará de nombre, luego puede confirmarla.
NathanAldenSr
Otra forma de conseguir lo mismo es cambiar el nombre de "Carpeta" a "Carpeta2" y hacer una confirmación y luego "Carpeta2" a "carpeta" y modificar la última confirmación.
DaniCE
@DaniCE Acabo de editar la respuesta: con git 2.0.1 esto debería ser mucho más simple.
VonC
22

Utilice el siguiente comando en macOS. Esto cambiará su configuración de git para que sea sensible a mayúsculas y minúsculas en los nombres de archivo.

git config core.ignorecase false

Puede configurar esto globalmente editándolo ~/.gitconfigy configurándolo en coretales como:

[core]
    ignoreCase = false
Brandon Yang
fuente
Hice exactamente lo contrario para que git tuviera éxito al hacer una rebase que incluía un cambio de nombre de caso. ¡Gracias!
sorin
21

Puede crear una imagen de disco (preferiblemente una imagen de disco dispersa) con un sistema de archivos que distingue entre mayúsculas y minúsculas y verifique su repositorio git allí.

La captura de pantalla de la Utilidad de Discos a continuación muestra cómo crear una imagen de disco que distinga entre mayúsculas y minúsculas.

Configuración de la utilidad de disco

adib
fuente
Una solución mucho mejor y permanente a este problema y otros misterios resultantes de la distinción entre mayúsculas y minúsculas. Hice la imagen del disco; he copiado mis antiguos repositorios de Git en él; hice un enlace simbólico desde donde solía guardar todos mis repositorios de git a la nueva versión de paquete disperso. Volver al flujo de trabajo normal para no volver a encontrar esto nunca más.
jwd630
El disco creado de esta manera es muy, muy lento.
Minqi Pan
1
@MinqiPan, tenía la misma preocupación, pero no debería ser así si crea un volumen APFS. Los volúmenes APFS pueden existir en la misma partición "contenedor" , por lo que no tienen ninguna penalización de rendimiento.
Victor Sergienko
12

Mac OS X de forma predeterminada "no distingue entre mayúsculas y minúsculas, pero conserva las mayúsculas y minúsculas". Esta es una distinción importante.

Le sugiero que cree otra imagen de disco y la formatee específicamente como "HFS sensible a mayúsculas y minúsculas".

Arafangion
fuente
Gracias por el consejo, ¡pero la publicación de arriba resolvió todo!
entropido
7
Desafortunadamente, una gran cantidad de software malo (Adobe, por supuesto) se basa en el sistema de archivos OSX roto predeterminado. Sé cauteloso.
Jim Stewart
5
git mv "Folder" "Folder2"
git mv "Folder2" "folder"
git commit -a -m "my message"
Mohamed EL HABIB
fuente
Sip. Tienes que seguir adelante y comprometerlo también. ++
RubberDuck