1. Reconocer el patrón incorrecto
Considera build/keep.txt y build/discard.txt sin seguimiento en la raíz. Estas reglas excluyen build entero: Git no entra a buscar keep.txt. La excepción posterior no puede recuperarlo.
/build/
!/build/keep.txt 2. Ignorar el contenido y conservar un archivo
Sustituye las dos reglas por estas en el .gitignore raíz. Permiten recorrer build, ignoran su contenido inmediato y vuelven a incluir keep.txt. Para excepciones más profundas, todos los directorios padres deben poder recorrerse.
A igual prioridad prevalece la última regla coincidente. Coloca la excepción después de la exclusión y revisa otros patrones y archivos .gitignore anidados.
/build/*
!/build/keep.txt 3. Verificar ambos archivos
Crea los dos archivos y ejecuta los comandos desde la raíz. La salida detallada debe mostrar !/build/keep.txt para keep.txt y /build/* para discard.txt. Una regla con ! indica reinclusión, no exclusión.
git check-ignore -v -- build/keep.txt build/discard.txtEl estado debe mostrar build/keep.txt como no seguido y omitir build/discard.txt. Si ya están seguidos, consulta su artículo: las reglas no cambian el índice.
git status --short --untracked-files=all -- build/ Consulta las referencias oficiales para conocer el comportamiento exacto y más detalles: Documentación de Git · Documentación de git check-ignore