Si Git en tu Mac está ignorando un archivo, ejecuta git check-ignore -v -- 'path/to/file' desde el repositorio en Terminal. La salida identifica el origen de la regla, el número de línea, el patrón coincidente y la ruta, para que puedas encontrar la regla y decidir si modificarla. Si el archivo ya está bajo seguimiento, repite la comprobación con --no-index.

Ejecuta la comprobación desde el repositorio

Abre Terminal y dirígete al directorio raíz del repositorio. Puedes escribir cd con un espacio al final, arrastrar la carpeta del proyecto desde Finder hasta la ventana de Terminal para insertar su ruta y luego presionar Return. Confirma que estás en un árbol de trabajo de Git con git status; si Git informa que el directorio no es un repositorio, entra primero en la carpeta del repositorio real del proyecto.

Usa la ruta al archivo relativa a la raíz del repositorio. Por ejemplo, para diagnosticar build/cache.json, ejecuta:

git check-ignore -v -- 'build/cache.json'

Las comillas simples hacen que el shell predeterminado de macOS, zsh, interprete la ruta de forma literal. Resultan especialmente útiles cuando un nombre contiene espacios o caracteres como * que, de otro modo, el shell interpretaría. El -- marca el final de las opciones, lo que también evita que una ruta que empiece con un guion se interprete como un parámetro.

Lee la salida para localizar la regla

Una coincidencia detallada (verbose) tiene este aspecto:

.gitignore:12:build/    build/cache.json

Los campos significan: .gitignore es el archivo de origen, 12 es su número de línea, build/ es el patrón y build/cache.json es la ruta consultada. Abre ese archivo de origen en tu editor de texto preferido e inspecciona la línea indicada. El origen también puede ser un archivo anidado .gitignore, .git/info/exclude, o un archivo de exclusiones globales configurado para tu cuenta de Git. Git documenta los campos de la salida detallada y estos orígenes de exclusión.

Una ruta de origen bajo .git/info/exclude se aplica a este repositorio, pero normalmente no se comparte con otros clones. Un archivo de exclusiones globales se aplica a tus propios repositorios. Un patrón en .gitignore suele ser el lugar adecuado para una regla que el proyecto deba compartir. Git comprueba las fuentes de exclusión por precedencia: los archivos .gitignore de niveles inferiores pueden anular las reglas padre, y el último patrón coincidente en el mismo nivel de precedencia determina el resultado. El manual de gitignore explica la precedencia y el uso previsto de cada origen.

Si Git no muestra nada

La ausencia de salida suele significar que ningún patrón de exclusión coincidió con esa ruta. La salida normal del comando lista las rutas ignoradas; usa -v para ver el patrón determinante. Comprueba que estás en el repositorio correcto y que la ortografía y el uso de mayúsculas y minúsculas de la ruta son exactos.

Los archivos bajo seguimiento suelen ser motivo de confusión: por defecto, git check-ignore no los reporta porque las reglas de exclusión se aplican a archivos que aún no están rastreados. Agrega --no-index para pedir a Git que compruebe las reglas de todos modos:

git check-ignore -v --no-index -- 'build/cache.json'

Esta opción diagnostica la regla; no deja de rastrear el archivo ni lo elimina de un commit. El método documentado por Git para dejar de rastrear un archivo es git rm --cached, seguido de una regla de exclusión adecuada. Eso modifica el índice, así que inspecciona el estado y comprende el impacto antes de ejecutarlo. Git explica la limitación de los archivos bajo seguimiento y la opción --no-index.

Comprueba las negaciones y el alcance de los patrones

Una línea coincidente que comience con ! es una negación: puede volver a incluir una ruta tras un patrón de exclusión previo, por lo que una coincidencia detallada con dicha línea no significa que el archivo siga ignorado. Git tampoco puede volver a incluir un archivo si se excluye un directorio padre; primero debe habilitarse el recorrido del directorio padre mediante reglas coincidentes. La documentación de patrones de Git describe la negación y esta limitación con los directorios padre.

Los patrones se interpretan en relación con el archivo .gitignore que los contiene. Un patrón con una barra inclinada queda restringido al nivel de directorio de ese archivo; un patrón de nombre simple puede coincidir en ese nivel y en los inferiores. Esto cobra importancia cuando una regla proviene de un .gitignore anidado: el patrón mostrado puede parecer correcto pero aplicarse a un subárbol diferente al esperado. Revisa la ubicación del archivo de origen así como el texto del patrón.

Para un solo archivo, git check-ignore -v suele ser suficiente para identificar dónde buscar. Para un archivo bajo seguimiento, incluye --no-index; después, utiliza el origen, la línea y el patrón reportados para determinar si la regla debe modificarse, restringirse o dejarse como está.

Fuentes