Eu tenho uma estrutura de directório como esta:
.git/
.gitignore
main/
...
tools/
...
...
Dentro do diretório principal e ferramentas, e qualquer outro diretório, em qualquer nível, pode haver um 'bin' diretório, que eu quero ignorar (e eu também quero ignorar tudo abaixo dele). I'tentei cada um destes padrões em .gitignore mas nenhum deles funciona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Alguém me pode ajudar? O primeiro padrão (aquele que eu acho que deveria estar funcionando) funciona muito bem se eu fizer isso:
/main/**/bin/**/*
Mas eu não'não quero ter uma entrada para cada diretório de nível superior e eu não'não quero ter que modificar o .gitignore toda vez que eu adicionar um novo.
Isto está no Windows usando o mais recente msysgit.
EDIT: mais uma coisa, há arquivos e diretórios que têm o substrato 'bin' em seus nomes, eu não'não quero que eles sejam ignorados :)
Antes da versão 1.8.2, **
não tinha nenhum significado especial no .gitignore'. A partir da versão 1.8.2 o git suporta
**` para significar zero ou mais subdiretórios (veja notas de lançamento).
A maneira de ignorar todos os diretórios chamados bin em qualquer lugar abaixo do nível atual em uma árvore de diretórios é com um arquivo `.gitignore' com o padrão:
bin/
Na página man
, há um exemplo de ignorar um diretório chamado foo
utilizando um padrão análogo.
Editar: Se você já tem alguma pasta de lixo no seu índice de idiotice que você não deseja mais rastrear, então você precisa removê-las explicitamente. Git não vai parar de rastrear caminhos que já estão sendo rastreados só porque eles agora correspondem a um novo padrão `.gitignore'. Execute uma remoção de pasta (rm) apenas do índice (--cached) recursivamente (**-r***). Exemplo de linha de comando para a pasta bin da raiz:
git rm -r --cached bin
O .gitignore
do seu sonho parece ser:
bin/
no nível superior.