2009-06-09 16 views
18

Estoy usando msysgit y tengo un árbol de proyectos que contiene muchos bin/folders en el árbol. Usando el archivo .gitignore en la raíz del proyecto, necesito ignorar todos los archivos .dll que residen dentro de un bin/carpeta en cualquier parte del árbol del proyecto. Intenté con "bin/*. Dll" pero eso no funciona, supongo que solo funciona en la carpeta/bin en la raíz del proyecto.Git - Ignorar ciertos archivos contenidos en carpetas específicas

+0

Confirmo "git add --dry-run * .dll" solo agregue .dll no ignorado. ¿Podría publicar el contenido de su archivo .gitignore? – VonC

+0

Tiene razón: '**/bin/*. Dll' solo funciona para 'x/bin/z.dll' (profundidad 2), no 'x/y/bin/z.dll' (profundidad 3). Mirándolo ahora. – VonC

+0

No estoy seguro de que gitignore apoye la detección recursiva de directorios ... He modificado mi respuesta. – VonC

Respuesta

9

Actualización Agosto 2016 (siete años después, Git 2.9.3/Git 2.10)

**/bin/*.dll 

Eso funciona para cualquier profundidad.


Respuesta original (2009, Git 1.6)

¿Usted intentó:

**/bin/*.dll 

que hace el trabajo con mi msysgit1.6.3 (con un archivo .gitignore en el directorio raíz de la Git espacio de trabajo).

En realidad, lo anterior solo ignoraría 'x/bin/z.dll', no 'x/y/bin/z.dll'.

Otra sintaxis podría ser:

**/*/bin/*.dll 

Pero eso sólo conseguiría profundidad 3, no la profundidad 2!

Así que si usted no tiene demasiados lugar donde .dll necesita * para ser ignorado, la solución más sencilla sería todavía un archivo local .gitignore en esos directorios bin '' ...

o una colección de directiva a los principales primeros profundidades:

bin/*.dll 
**/bin/*.dll 
**/*/bin/*.dll 
**/**/*/bin/*.dll 

y así sucesivamente, todo en un solo archivo .gitignore.

+0

Estoy usando msysgit 1.6.3 también pero el patrón **/bin/*. dll no funcionó. Agregué ese patrón a mi .gitignore en la raíz y luego intenté con "git add --dry-run * .dll" desde la raíz y enlisté mis archivos .dll contenidos en el bin/folders del árbol de mi proyecto. –

13

Acabo de tener /bin en mi archivo y parece que funciona. Ignora toda la carpeta (a diferencia de archivos específicos en ella)

A continuación se detallan los contenidos completos (en evolución).

.svn* 
obj/ 
bin/ 
*.suo 
*.user 
Log/ 
log/ 
*.db 
+0

Funciona. al menos para mi. git versión 1.7.2.5 –

+0

sí. ¡excelente! también funciona para mí – gpol

0

*/bin trabajó para mí

yo creo que */bin/haría también.

+0

Eso solo funciona a profundidad 1: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html "los comodines en el patrón no coincidirán con/en la ruta" – I82Much

+0

Entonces, ¿qué funcionaría? \*/compartimiento\*? Creo que lo hice más tarde ... para un directorio diferente. – rball

14

Acabo de tener un problema similar y me di cuenta: Los archivos ya se han agregado y se han registrado en git.

Cómo reconocer la diferencia: Git no mostró los archivos como "nuevos", sino como "modificados". Estos detalles me han costado bastante tiempo ...

Si ese es el problema, simplemente "git rm" estos archivos y empiecen de nuevo. De repente, .gitignore comienza a funcionar como se esperaba.

+1

esto funcionó para mí, pero es la cosa más estúpida que he tenido que hacer con Git. – BryanGrimes

+0

git rm -f -r/ruta #para forzar y eliminar una carpeta. – tgkprog

4

.gitignore en Windows, simplemente no parece funcionar. Estoy usando msysgit v 1.7.6 beta, y simplemente no funciona de la forma que debería por la página man de .gitignor. Ahora, si copio el contenido de mi archivo .gitignore en el archivo $ GIT_DIR/info/exclude, dentro del repositorio, las cosas funcionan.

Por lo tanto, el fastidio es que esto no se replica, pero es mejor que nada.

+0

Esto funcionó! Estoy usando github para windows –

Cuestiones relacionadas