ignorere enhver 'bin' -katalog på et git-prosjekt

Jeg har en katalogstruktur som dette:

.git/
.gitignore
main/
  ...
tools/
  ...
...

Inne i main og tools, og hvilken som helst annen katalog, på hvilket som helst nivå, kan det være en 'bin' katalog, som jeg vil ignorere (og jeg vil ignorere alt under den også). Jeg har prøvd hvert av disse mønstrene i .gitignore, men ingen av dem fungerer:

/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too

Kan noen hjelpe meg? Det første mønsteret (det jeg tror skal fungere) fungerer helt fint hvis jeg gjør dette:

/main/**/bin/**/*

Men jeg vil ikke ha en oppføring for hver toppnivåkatalog, og jeg vil ikke måtte endre .gitignore hver gang jeg legger til en ny.

Dette er på Windows ved hjelp av den nyeste msysgit.

EDIT: en ting til, det er filer og kataloger som har understrengen ' bin ' i navnene sine, jeg vil ikke at de skal ignoreres :)

Løsning

Før versjon 1.8.2 hadde ** ingen spesiell betydning i .gitignore. Fra 1.8.2 støtter git ** for å bety null eller flere underkataloger (se release notes).

Måten å ignorere alle kataloger som heter bin hvor som helst under det gjeldende nivået i et katalogtre er med en .gitignore-fil med mønsteret:

bin/

man-siden er det et eksempel på å ignorere en katalog kalt foo ved hjelp av et analogt mønster.

Rediger: Hvis du allerede har noen bin-mapper i git-indeksen din som du ikke lenger ønsker å spore, må du fjerne dem eksplisitt. Git vil ikke slutte å spore baner som allerede spores bare fordi de nå samsvarer med et nytt .gitignore-mønster. Utfør en mappefjerning (rm) fra bare indeks (--cached) rekursivt (-r). Kommandolinjeeksempel for rotmappe:

git rm -r --cached bin
Kommentarer (9)

.gitignore` av drømmen din ser ut til å være:

bin/

på øverste nivå.

Kommentarer (4)

Jeg så det ikke nevnt her, men dette ser ut til å være saksfølsomt. Når jeg endret til /Bin ble filene ignorert som forventet.

Kommentarer (2)