¿Por qué una regla global de Git ignora un archivo?

Un archivo puede ignorarse sin coincidencias en el .gitignore del proyecto. Localiza la fuente antes de cambiar la configuración.

1. Identificar la regla

Desde la raíz, sustituye path/to/file por la ruta real de un archivo no seguido:

git check-ignore -v -- path/to/file

La salida detallada muestra archivo fuente, línea y patrón: puede ser .gitignore, .git/info/exclude o un archivo global. ! vuelve a incluir una ruta. No ver salida también puede significar que el archivo ya está seguido; compruébalo aparte.

2. Localizar el archivo global configurado

Examina el valor efectivo de core.excludesFile y el archivo que lo define:

git config --show-origin --get core.excludesFile

Sin salida y con código 1, el ajuste no existe; esto no desactiva las exclusiones globales. Git consulta también $XDG_CONFIG_HOME/git/ignore, o $HOME/.config/git/ignore si XDG_CONFIG_HOME está vacío o sin definir. Empieza por la fuente indicada por check-ignore.

3. Modificar la fuente adecuada y verificar

Las reglas compartidas van en .gitignore; las personales de un repositorio, en .git/info/exclude; las personales de varios repositorios, en el archivo global. Cambiar este último afecta a otros repositorios: no elimines toda la configuración por una ruta. .gitignore tiene prioridad sobre .git/info/exclude y core.excludesFile. Una excepción del proyecto puede anular una exclusión de menor prioridad si ningún padre sigue excluido. Vuelve a comprobar la ruta real:

git check-ignore -v -- path/to/file

¿Por qué ! no conserva un archivo en un directorio ignorado?

Consulta las referencias oficiales para conocer el comportamiento exacto y más detalles: Documentación de Git · Documentación de git check-ignore · Documentación de configuración de Git