Git ignora las carpetas secundarias

Tengo muchos proyectos en mi solución .Net. Me gustaría excluir todas las carpetas "bin / Debug" y "bin / release" (y sus contenidos), pero aún includeé la carpeta "bin" y cualquier dll contenida en ella.

.gitignore con "bin /" ignora las carpetas "Debug" y "Release", pero también cualquier dll contenido en la carpeta "bin".

"bin / Debug" o "bin / Release" en el file .gitignore no excluye los directorys, a less que califique completamente el patrón de ignorar como "Solución / Proyecto / bin / Debug" – que no quiero hacer como yo Necesitaré include este patrón completo para cada proyecto en mi solución, así como agregarlo para cualquier proyecto nuevo agregado.

¿Alguna sugerencia?

¿Has probado comodines?

Solution/*/bin/Debug Solution/*/bin/Release 

Con la versión 1.8.2 de git, también puedes usar el comodín ** para que coincida con cualquier nivel de subdirectorys:

 **/bin/Debug/ **/bin/Release/ 

Puede usar .gitignore en el nivel superior para ignorar todos los directorys en el proyecto con el mismo nombre. Por ejemplo:

 Debug/ Release/ 

Esto debería actualizarse inmediatamente para que esté visible cuando hagas el estado de git. Asegúrese de que estos directorys aún no se hayan agregado a git, ya que eso anulará los ignores.

La pregunta no es sobre ignorar todos los subdirectorys, pero no pude encontrar la respuesta en ningún lado, así que lo publicaré: */* .

Todas las respuestas anteriores son válidas, pero algo que no creo que se mencione es que una vez que agregas un file de ese directory al repository, no puedes ignorar ese directory / subdirectory que contiene ese file (git ignorará esa directiva ) Primero tendrá que eliminar todos los files del directory de destino del repository y luego podrá ignorar esa carpeta.

Además de poner las inputs correctas en su file .gitignore, si está tratando de ignorar algo que ya se ha agregado al repository, debe hacer git rm -r /path/to/dir y confirmarlo antes de agregar el directory a su. file gitignore. De lo contrario, lo único que Git ignorará es tu directiva de ignorar.

La única forma en que hice que esto funcionara en mi máquina fue hacerlo de esta manera:

 # Ignore all directories, and all sub-directories, and it's contents: */* #Now ignore all files in the current directory #(This fails to ignore files without a ".", for example #'file.txt' works, but #'file' doesn't): *.* #Only Include these specific directories and subdirectories: !wordpress/ !wordpress/*/ !wordpress/*/wp-content/ !wordpress/*/wp-content/themes/ !wordpress/*/wp-content/themes/* !wordpress/*/wp-content/themes/*/* !wordpress/*/wp-content/themes/*/*/* !wordpress/*/wp-content/themes/*/*/*/* !wordpress/*/wp-content/themes/*/*/*/*/* 

Observe cómo debe permitir explícitamente el contenido para cada nivel que desee include. Entonces, si tengo subdirectorys 5 muy por debajo de los temas, aún necesito deletrear eso.

Esto es del comentario de @ Yarin aquí: http://sofes.miximages.com/a/5250314/1696153

Estos fueron temas útiles:

  • ¿Cómo funcionan los patrones negados en .gitignore?
  • ¿Cómo funcionan las reglas de exclusión de gitignore?

También intenté

 * */* **/** 

y **/wp-content/themes/**

o /wp-content/themes/**/*

Nada de eso funcionó para mí, tampoco. ¡Un montón de rastro y error!

La forma genérica de ignorar todas las subcarpetas, mientras continúa rastreando los files que están en el directory /bin sería agregar la siguiente línea al file .gitignore de su proyecto:

 bin/*/* 

Si desea ignorar solo determinadas subcarpetas con nombre, puede hacer:

 bin/Debug/* bin/Release/* 

nótese bien. si el directory bin no está en la raíz de su proyecto (junto con el file .gitignore), entonces en lugar de, por ejemplo. bin/*/* es posible que necesite path/to/bin/*/*

Para ignorar todos los subdirectorys, simplemente puede usar:

 **/ 

Esto funciona a partir de la versión 1.8.2 de git.

Necesitaba confirmar los cambios que se hicieron al directory dirname/ . Ahora agregando dirname/ a .gitignore el directory dirname ahora se ignora.