2011-09-28 11 views
10

¿Cómo puedo ignorar cierto tipo de archivo solo en un directorio y su subdirectorio?¿Cómo ignoro cierto tipo de archivo en cierto directorio y su subdirectorio en Git?

Para explicar lo que entiendo imágenes de la siguiente configuración

  • anotherdir/
    • seeme1.iml
  • foldertoignore/
    • ignoreme1.iml
    • SE eme3.txt
    • anotherignorefolder/
      • ignoreme2.iml
      • seeme4.txt
  • seeme5.iml

Quiero ser capaz de hacer es decirle git (usando el archivo .gitignore) para ignorar * .iml pero solo bajo el directorio foldtertoignore.

Estaba pensando que esto funcionaría

foldertoignore/*.iml 

Pero eso sólo se encuentra ignoreme1.iml no ignoreme2.iml

Yo sé cómo decirle a ignorar * .iml a excepción de una directorio específico Esto es el reverso de eso. ¿Alguna idea?

Respuesta

1

Puede probar esto:

/foldertoignore/**/*.iml 

Se puede o no funcionar dependiendo de la aplicación fnmatch en su sistema operativo supongo. Alternativa es:

*.iml 
!/anotherdir/*.iml 
!/*.iml 
+0

Con msysgit en Windows, '**' '' no parece ser aplicado de forma recursiva (como ya se ha visto en http://stackoverflow.com/questions/971465/git-ignore-certain-files- contained-in-specific-folders/971523 # 971523, http://stackoverflow.com/questions/991801/git-ignores-and-maven-targets/991873#991873, y se explica en detalle aquí: http: // stackoverflow. com/questions/2899875/git-add-not-working-with-png-files/2902126 # 2902126) – VonC

+0

@Vonc - ¿No dije que esto podría no funcionar? Y no creo que el OP haya mencionado a msysgit. – manojlds

+0

Sí, y no, no;) Mi comentario no fue de ninguna manera una crítica, solo un hecho que he observado en Windows con msysgit, y una forma de vincular su respuesta con otros donde un problema similar (relacionado con 'fnname') fue discutido.Por cierto, no rechacé tu respuesta (pero he actualizado Knittl's, que considero más apropiado y robusto para esta situación). – VonC

8

.gitignore reglas se aplican de forma recursiva del directorio que contiene. Simplemente cree el archivo foldertoignore/.gitignore con *.iml como contenido.

>>foldertoignore/.gitignore echo '*.iml' 
git add foldertoignore/.gitignore 
git commit -m 'Ignore .iml files in foldertoignore and its subfolders' 
+0

Se ve bien. Gracias – Lango

Cuestiones relacionadas