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
.gitignore
archivo con el patrón:En la
man
página, hay un ejemplo de ignorar un directorio llamadofoo
usando 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
.gitignore
patró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.gitignore
archivos (fuente: 1.8.2 changelog )bin
lo mismo debin/
?bin
ignorarán los archivos llamados bin, mientrasbin/
que para los directorios llamados binEl
.gitignore
de 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 -A
en 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úsculaBin
carpeta ignore y dejar que sebin
comprometa con git?[B]in/
ambos se comprometeránBin
ybin
.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]in
resolverá 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
.gitignore
archivo 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
.gitignore
para 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.
Entonces el problema estará completamente resuelto.
fuente
Literalmente, ninguna de las respuestas realmente funcionó para mí; el único que funcionó para mí fue (en Linux):
fuente
bin
en los subdirectorios?Como un aviso;
Si piensa
.gitignore
que no funciona de alguna manera (así que agregó lafoo/*
carpeta perogit status
aú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
.gitignore
termina con una barra inclinada/
, solo encontrará una coincidencia con un directorio.En otras palabras,
bin/
coincidirá con un directoriobin
y 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
bin
Git, lo trata como un patrón de globo (codicioso). Así que lo mejor sería usar simple/bin
.bin
No 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