Estoy intentando usar un archivo .gitignore con patrones negados (¡líneas que comienzan con!), Pero no funciona como esperaba.
Como ejemplo mínimo, tengo la siguiente estructura de directorios:
C:/gittest
-- .gitignore
-- aaa/
-- bbb/
-- file.txt
-- ccc/
-- otherfile.txt
y en mi archivo gitignore, tengo esto:
aaa/
!aaa/ccc/
Tengo entendido (basado en esta página de documentos ) que el archivo aaa / ccc / otherfile.txt no debe ignorarse, pero de hecho git está ignorando todo lo que se encuentra en aaa.
¿Estoy entendiendo mal esta oración: "Un prefijo opcional! Que niega el patrón; cualquier archivo coincidente excluido por un patrón anterior se incluirá nuevamente"?
Por cierto, esto es en Windows con msysgit 1.7.0.2.

Si desea excluir todo en
aaa, pero incluiraaa/cccy todo lo que está debajo, debe usar:La primera línea le dice a git que ignore todo lo que está debajo
aaa, la segunda le dice que no ignore la carpetaaaa/cccque en realidad "habilita" la tercera línea que luego le dice que no ignore todo lo que está debajoaaa/ccc.fuente
aaa/ccccualquier nivel, lo que funcionó para mí fue en!aaa/ccc/**lugar de!aaa/ccc/*Si alguien aún no ve elementos nuevos no ignorados en una
git statusejecucióngit update-indexprevia, puede ayudar a git a ver los cambios (al menos en la versión 1.9.x de gitbash).fuente