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.