Mám takúto štruktúru adresárov:
.git/
.gitignore
main/
...
tools/
...
...
Vo vnútri adresárov main a tools a v ktoromkoľvek inom adresári na ľubovoľnej úrovni môže byť adresár 'bin', ktorý chcem ignorovať (a chcem ignorovať aj všetko pod ním). Vyskúšal som každý z týchto vzorov v .gitignore, ale žiadny z nich nefunguje:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Môže mi niekto pomôcť? Prvý vzor (ten, o ktorom si myslím, že by mal fungovať) funguje v poriadku, ak urobím toto:
/main/**/bin/**/*
Ale nechcem mať záznam pre každý adresár najvyššej úrovne a nechcem upravovať .gitignore zakaždým, keď pridám nový.
Toto je v systéme Windows s použitím najnovšej verzie msysgit.
EDIT: ješte jedna vec, existujú súbory a adresáre, ktoré majú v názve podreťazec 'bin', nechcem, aby boli ignorované :)
Pred verziou 1.8.2 nemalo **
v súbore .gitignore
žiadny špeciálny význam. Od verzie 1.8.2 git podporuje **
na označenie nula alebo viac podadresárov (pozri poznámky k vydaniu).
Spôsob, ako ignorovať všetky adresáre s názvom bin kdekoľvek pod aktuálnou úrovňou v adresárovom strome, je pomocou súboru .gitignore
so vzorom:
bin/
Na stránke man
je príklad ignorovania adresára s názvom foo
pomocou analogického vzoru.
Úprava:
Ak už máte v indexe git nejaké adresáre bin, ktoré už nechcete sledovať, musíte ich explicitne odstrániť. Git neprestane sledovať cesty, ktoré už sleduje, len preto, že teraz zodpovedajú novému vzoru .gitignore
. Vykonajte odstránenie priečinka (rm) len z indexu (--cached) rekurzívne (-r). Príklad príkazového riadka pre koreňový priečinok bin:
git rm -r --cached bin
Zdá sa, že .gitignore
vášho sna je:
bin/
na najvyššej úrovni.