Ho una struttura di directory come questa:
.git/
.gitignore
main/
...
tools/
...
...
All'interno di main e tools, e di qualsiasi altra directory, a qualsiasi livello, ci può essere una 'bin'directory, che voglio ignorare (e voglio ignorare anche tutto quello che c'è sotto). Ho provato ognuno di questi schemi in .gitignore ma nessuno di essi funziona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Qualcuno può aiutarmi? Il primo modello (quello che penso dovrebbe funzionare) funziona bene se faccio così:
/main/**/bin/**/*
Ma non voglio avere una voce per ogni directory di primo livello e non voglio dover modificare .gitignore ogni volta che ne aggiungo una nuova.
Questo è su Windows usando l'ultimo msysgit.
EDIT: un'altra cosa, ci sono file e directory che hanno la sottostringa 'bin' nei loro nomi, non voglio che siano ignorati :)
Prima della versione 1.8.2, **
non aveva alcun significato speciale nel .gitignore
. A partire dalla 1.8.2 git supporta **
per indicare zero o più sottodirectory (vedi note di rilascio).
Il modo per ignorare tutte le directory chiamate bin ovunque sotto il livello corrente in un albero di directory è con un file .gitignore
con lo schema:
bin/
Nella pagina man
, c'è un esempio di ignorare una directory chiamata foo
usando uno schema analogo.
Modifica:
Se hai già delle cartelle bin nel tuo indice git che non vuoi più tracciare, allora devi rimuoverle esplicitamente. Git non smetterà di tracciare i percorsi che sono già tracciati solo perché ora corrispondono ad un nuovo pattern .gitignore
. Esegui una rimozione della cartella (rm) solo dall'indice (--cached) ricorsivamente (-r). Esempio di linea di comando per la cartella bin principale:
git rm -r --cached bin
Il .gitignore
del tuo sogno sembra essere:
bin/
nel livello superiore.