Tengo una estructura de directorios como esta:
.git/
.gitignore
main/
...
tools/
...
...
Dentro de main y tools, y cualquier otro directorio, en cualquier nivel, puede haber un directorio 'bin', que quiero ignorar (y quiero ignorar todo lo que está debajo). He intentado cada uno de estos patrones en .gitignore pero ninguno de ellos funciona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
¿Puede alguien ayudarme? El primer patrón (el que creo que debería funcionar) funciona bien si hago esto:
/main/**/bin/**/*
Pero no quiero tener una entrada para cada directorio de nivel superior y no quiero tener que modificar .gitignore cada vez que agrego uno nuevo.
Esto está en Windows usando el último msysgit.
EDITAR: una cosa más, hay archivos y directorios que tienen la subcadena 'bin' en sus nombres, no quiero que se ignoren :)

**sintaxis parece ahora (marzo de 2013, git 1.8.2) documentada oficialmente: vea mi respuesta a continuaciónRespuestas:
Antes de la versión 1.8.2,
**no tenía ningún significado especial en el.gitignore. A partir de 1.8.2, git admite**cero o más subdirectorios (consulte las notas de la versión ).La forma de ignorar todos los directorios llamados bin en cualquier lugar debajo del nivel actual en un árbol de directorios es con un
.gitignorearchivo con el patrón:En la
manpágina, hay un ejemplo de ignorar un directorio llamadofoousando un patrón análogo.Editar: si ya tiene carpetas bin en su índice git que ya no desea rastrear, entonces debe eliminarlas explícitamente. Git no dejará de rastrear rutas que ya se están rastreando solo porque ahora coinciden con un nuevo
.gitignorepatrón. Ejecute una carpeta remove ( rm ) del índice solamente ( --cached ) recursivamente ( -r ). Ejemplo de línea de comando para la carpeta bin raíz:fuente
**en.gitignorearchivos (fuente: 1.8.2 changelog )binlo mismo debin/?binignorarán los archivos llamados bin, mientrasbin/que para los directorios llamados binEl
.gitignorede tu sueño parece ser:en el nivel superior
fuente
Creo que vale la pena mencionar para los principiantes de git:
Entonces, si desea agregar para ignorar algunos directorios en su repositorio local (que ya existen) después de editar .gitignore, desea ejecutar esto en su directorio raíz
Básicamente 'actualizará' su repositorio local y eliminará los archivos ignorados.
Ver:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
fuente
git add -Aen mis commits, ¿puedo usar esto en su lugar? ¿y puedo reemplazar el punto con -A en la primera línea también?El
**no funcionaba correctamente antes, pero desde Git 1.8.2 (marzo 8 de 2013) , parece ser mencionado y apoyado de forma explícita:En su caso, eso significa que esta línea ahora podría ser compatible:
fuente
coincide con mayúsculas y minúsculas
fuente
[B]in/será la única mayúsculaBincarpeta ignore y dejar que sebincomprometa con git?[B]in/ambos se comprometeránBinybin.Bin/!bin/No lo vi mencionado aquí, pero esto parece ser sensible a mayúsculas y minúsculas. Una vez que cambié a / Bin, los archivos fueron ignorados como se esperaba.
fuente
bin, noBin.[Bb]inresolverá el problema, pero ... Aquí hay una lista más extensa de cosas que debe ignorar (lista de muestra de GitExtension):fuente
Si está buscando un gran
.gitignorearchivo global para cualquier solución de Visual Studio (.NET), le recomiendo que use este: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK tiene el más completo
.gitignorepara proyectos .NET.fuente
Paso 1: Agregue el siguiente contenido al archivo .gitignore.
Paso 2: asegúrese de tener efecto
Si el problema persiste, eso se debe a que la configuración en .gitignore solo puede ignorar los archivos que originalmente no fueron rastreados . Si algunos archivos ya se han incluido en el sistema de control de versiones, la modificación de .gitignore no es válida. Para resolver este problema por completo, debe abrir Git Bash o Package Manager Console (vea la captura de pantalla a continuación) para ejecutar los siguientes comandos en la carpeta raíz del repositorio.
fuente
Literalmente, ninguna de las respuestas realmente funcionó para mí; el único que funcionó para mí fue (en Linux):
fuente
binen los subdirectorios?Como un aviso;
Si piensa
.gitignoreque no funciona de alguna manera (así que agregó lafoo/*carpeta perogit statusaún muestra los contenidos de la carpeta como modificados o algo así), puede usar este comando;git checkout -- foo/*fuente
para 2.13.3 en adelante, escribir solo bin en su archivo .gitignore debería ignorar el bin y todos sus subdirectorios y archivos
fuente
Agregar ** / bin / al archivo .gitignore fue el truco para mí (Nota: la carpeta bin no se agregó al índice).
fuente
Si el patrón interior
.gitignoretermina con una barra inclinada/, solo encontrará una coincidencia con un directorio.En otras palabras,
bin/coincidirá con un directoriobiny rutas debajo de él, pero no coincidirá con un archivo normal o un enlace simbólicobin.Si el patrón no contiene una barra oblicua , como en
binGit, lo trata como un patrón de globo (codicioso). Así que lo mejor sería usar simple/bin.binNo sería la mejor solución para este problema en particular.fuente
/?En mi caso, la codificación del archivo gitignore fue problemática, verifique si es UTF-8
fuente