gitignore no ignora los files en un subdirectory

Entonces, quiero que Git ignore algunos files en un subdirectory dentro de un repository git.

El layout de la estructura del directory del proyecto es básicamente el siguiente:

GIT_ROOT ---project1 ------src 

Quiero que git ignore ciertos files en GIT_ROOT/project1 . Hago esto creando un file .gitignore e ignorando cosas como Makefile u otra pelusa autoconf generada. Sin embargo, autoconf también crea Makefiles en subdirectorys, por lo que también se generará un Makefile en GIT_ROOT/project1/src . Naturalmente, quiero ignorar todos los Makefiles en GIT_ROOT/project AND GIT_ROOT/project/src .

Pensé que podría hacer esto agregando lo siguiente al file GIT_ROOT/project1 en GIT_ROOT/project1 :

 **/Makefile **/Makefile.in 

Tengo entendido que esto debería indicarle a git que ignore cualquier Makefile que aparezca en GIT_ROOT/project1 , o cualquier Makefile que aparezca en subdirectorys, como GIT_ROOT/project1/src . Sin embargo, cuando realmente comprometo y presiono a un maestro remoto, git solo ignora Makefiles en GIT_ROOT/project1 , pero no ignora ningún Makefile en directorys más profundos.

¿Debo include un file .gitignore en cada subdirectory? Si no, ¿por qué el file .gitignore en GIT_ROOT/project1 no se aplica a Makefiles en GIT_ROOT/project1/src ?

Simplemente puede agregar a su file GIT_ROOT/project1 en GIT_ROOT/project1 :

 Makefile Makefile.in 

No hay necesidad de comodines ' * '.
Eso se aplicará a project1 y cualquier subcarpeta.
Puede verificarlo con un git check-ignore -v -- project1/xxx/Makefile .

Si no son ignorados, eso significa que ya están versionados: un git rm –cached puede eliminarlos del índice.