¿Por qué .gitignore no incluye un file con el prefijo a!

Mi file .gitignore dice lo siguiente:

build/ glucosia.xcodeproj/ !glucosia.xcodeproj/project.pbxproj core-plot/framework/build core-plot/framework/CorePlot-CocoaTouch.xcodeproj/ !core-plot/framework/CorePlot-CocoaTouch.xcodeproj/project.pbxproj .DS_Store Classes/.DS_Store 

Curiosamente, glucosia.xcodeproj/project.pbxproj no se ignora, como era de esperar.

Pero, core-plot/framework/CorePlot-CocoaTouch.xcodeproj/project.pbxproj aún se ignora.

¿Algunas ideas?

¡Gracias!

Como se menciona en la página man de gitignore :

Un file gitignore especifica intencionalmente files sin gitignore que git debe ignorar

Si glucosia.xcodeproj/project.pbxproj (como lo sugirió Alan en los comentarios) ya se ha rastreado, debe eliminarlo de la memory caching y, a continuación, la directiva gitingore surtirá efecto.

 git rm --cached glucosia.xcodeproj/project.pbxproj 

Si el file ya se ha confirmado, consulte esta respuesta SO ( git commit --amend para eliminarlo de la última confirmación)

Tuve el mismo problema, pero una solución diferente. Si ignora un directory pero no un file dentro de él, no funcionará. Tienes que ignorar los files de un directory.

Esto no funciona:

 conf/ !conf/config.json.orig 

Esto funcionará:

 conf/* !conf/config.json.orig