agregar files con punto en nombre a .gitignore

Tengo un problema al crear algunas inputs para el file .gitignore . Hay directorys con . en sus nombres, así:

 Thing1.This/bin Thing1.That/bin Thing1.TheOther/bin 

Quiero excluir los directorys bin. Estos directorys se pueden agregar explícitamente, pero hay muchos que lo harían tedioso. También intenté usar ambas líneas, pero ninguna de ellas funcionó:

 */bin [Bb]in 

¿Cómo se puede especificar esto?

Estoy trabajando en Windows 7.

Corrí:

 $ for number in $(seq 1 9); do mkdir -p Thing$number.Thing/bin; done $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: makefile # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # b+tree # b+tree.cpp # cswap.c # qs.c # qs2.c # qs3.c # select.c # shm # shm.c # sleepers-awake.c no changes added to commit (use "git add" and/or "git commit -a") $ 

No hay contenido en los directorys, por lo que no hay nada que git pueda rastrear, por lo que no se enumeran como necesarios para rastrear. Agregué files a los directorys:

 $ for d in Thing?.Thing/bin; do cp qs.c $d; done $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: makefile # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # Thing1.Thing/ # Thing2.Thing/ # Thing3.Thing/ # Thing4.Thing/ # Thing5.Thing/ # Thing6.Thing/ # Thing7.Thing/ # Thing8.Thing/ # Thing9.Thing/ # b+tree # b+tree.cpp # cswap.c # qs.c # qs2.c # qs3.c # select.c # shm # shm.c # sleepers-awake.c no changes added to commit (use "git add" and/or "git commit -a") $ 

Los directorys ahora aparecen en git como necesarios para ser agregados. Edité .gitignore para agregar Thing*.Thing/bin así:

 Thing*.Thing/bin *.a *.dSYM *.o *.so *~ a.out core posixver.h timer.h 

Vuelvo a cambiar el git status :

 $ git status # On branch master # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: .gitignore # modified: makefile # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # b+tree # b+tree.cpp # cswap.c # qs.c # qs2.c # qs3.c # select.c # shm # shm.c # sleepers-awake.c no changes added to commit (use "git add" and/or "git commit -a") $ 

Entonces, ¿las expresiones regulares (globs?) Pueden hacerse funcionar. También reinterpreté la testing (después de limpiar la primera) usando */bin en .gitignore ; mismo resultado: el patrón funcionó y suprimió los directorys.

Probado en Mac OS X 10.9 (Mavericks) con git --version reporting 1.8.3.4 (Apple Git-47) .

Si desea agregar directorys bin en cualquier subdirectory a gitignore, puede usar esta syntax:

 **/bin/ 

Ignora todas las carpetas bin en el repository. De los documentos :

Un " ** " adelantado seguido de una barra inclinada significa coincidencia en todos los directorys. Por ejemplo, " ** / foo" coincide con el file o directory "foo" en cualquier lugar, igual que el patrón "foo". " ** / foo / bar" coincide con la "barra" del file o directory en cualquier lugar que se encuentre directamente debajo del directory "foo".