Compartir a través de


Distinción entre mayúsculas y minúsculas de Git

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Los sistemas de archivos Windows y macOS no distinguen mayúsculas de minúsculas (pero conservan mayúsculas de minúsculas) de forma predeterminada. La mayoría de los sistemas de archivos de Linux distinguen mayúsculas de minúsculas. Git se creó originalmente para ser el sistema de control de versiones del kernel de Linux, por lo que no es sorprendente, distingue mayúsculas de minúsculas.

Aunque muchos de los problemas con un sistema operativo que no distingue mayúsculas de minúsculas se han solucionado en Git para Windows, se conservan algunas peculiaridades.

Nombres de archivo y carpeta

En Linux, la desprotegición de un repositorio de Git que contiene "File.txt" y "file.txt" no es problema. Son nombres de archivo distintos. En Windows y macOS, la desproteción de ambos archivos provocará que la segunda sobrescriba la primera. Si dos carpetas solo difieren por caso, su contenido terminará mezclado en sistemas de archivos que no distinguen mayúsculas de minúsculas.

Corrección de conflictos de casos

Una manera de corregir un repositorio con este problema es desprotegerlo en un entorno que distingue mayúsculas de minúsculas. Cambie el nombre de los archivos y las carpetas para que ya no entren en conflicto y, a continuación, inserte esos cambios en el repositorio. Subsistema de Windows para Linux es uno de estos entornos. Otro enfoque consiste en usar el comando git mv -f <conflicting name> <non-conflicting name> para cada conflicto, teniendo cuidado de usar mayúsculas exactas en ambos nombres de archivo.

Evitar conflictos de casos

Es bueno evitar crear esta situación en primer lugar. Azure Repos ofrece una configuración de aplicación de mayúsculas y minúsculas para evitar inserciones que provocarían esta situación. Para los desarrolladores, la adopción del hábito de usar la finalización de tabulaciones para confirmar archivos también ayudará. Dado que Windows y macOS conservan mayúsculas y minúsculas, esto garantizará que los elementos internos de Git vean exactamente el mismo uso de mayúsculas y minúsculas que usa el sistema de archivos.

Nombres de rama y etiqueta

Puede crear dos ramas o etiquetas (conocidas como "refs") que solo difieren en mayúsculas y minúsculas. Los elementos internos de Git, así como Azure DevOps Services/TFS, los tratarán como dos referencias independientes. En el equipo de un usuario, Git usa el sistema de archivos para almacenar referencias. Las capturas y otras operaciones comienzan a producir errores debido a la ambigüedad. Cada referencia se representa mediante un archivo pequeño y, si un nombre ref contiene / caracteres, las partes antes de la final / se representan mediante carpetas.

Una manera sencilla de evitar problemas es usar siempre nombres de etiqueta y rama en minúsculas. Si ya ha creado dos ramas o etiquetas con este problema, puede corregirlo en la interfaz de usuario web de Azure Repos.

Corrección de nombres de rama

En la página ramas, vaya a la confirmación relacionada. En el menú contextual, elija "Nueva rama". Asigne a la rama un nuevo nombre que no tenga un conflicto de mayúsculas y minúsculas. Vuelva a la página ramas y elimine la rama en conflicto.

Corrección de nombres de etiqueta

Los pasos para corregir un nombre de etiqueta son similares a las ramas. En la página etiquetas, vaya a la confirmación etiquetada. En el menú contextual, elija "Crear etiqueta". Asigne a la etiqueta un nuevo nombre que no tenga un conflicto entre mayúsculas y minúsculas. Vuelva a la página etiquetas y elimine la etiqueta en conflicto.