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/ccc
y 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/ccc
que en realidad "habilita" la tercera línea que luego le dice que no ignore todo lo que está debajoaaa/ccc
.fuente
aaa/ccc
cualquier 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 status
ejecucióngit update-index
previa, puede ayudar a git a ver los cambios (al menos en la versión 1.9.x de gitbash).fuente