Eu tenho uma estrutura de diretórios como esta:
.git/
.gitignore
main/
...
tools/
...
...
Dentro do main e tools, e qualquer outro diretório, em qualquer nível, pode haver um diretório 'bin' que eu quero ignorar (e também quero ignorar tudo nele). Eu tentei cada um desses padrões no .gitignore, mas nenhum deles funciona:
/**/bin/**/*
/./**/bin/**/*
./**/bin/**/*
**/bin/**/*
*/bin/**/*
bin/**/*
/**/bin/* #and the others with just * at the end too
Alguém pode me ajudar? O primeiro padrão (o que eu acho que deveria estar funcionando) funciona muito bem se eu fizer isso:
/main/**/bin/**/*
Mas não quero ter uma entrada para todos os diretórios de nível superior e não preciso modificar .gitignore toda vez que adiciono um novo.
Este é no Windows usando o mais recente msysgit.
EDIT: mais uma coisa, existem arquivos e diretórios que possuem a subcadeia 'bin' em seus nomes, não quero que eles sejam ignorados :)
**
sintaxe parece agora (março de 2013, git 1.8.2) oficialmente documentado: ver minha resposta abaixoRespostas:
Antes da versão 1.8.2,
**
não havia nenhum significado especial no.gitignore
. A partir da versão 1.8.2, o git suporta**
zero ou mais subdiretórios (consulte as notas da versão ).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
.gitignore
arquivo com o padrão:Na
man
página, há um exemplo de ignorar um diretório chamadofoo
usando um padrão análogo.Editar: se você já possui pastas bin no seu índice git que não deseja mais acompanhar, é necessário removê-las explicitamente. O Git não para de rastrear caminhos que já estão sendo rastreados apenas porque agora correspondem a um novo
.gitignore
padrão. Execute uma pasta remover ( rm ) apenas do índice ( --cached ) recursivamente ( -r ). Exemplo de linha de comando para a pasta na lixeira raiz:fonte
**
em.gitignore
arquivos (fonte: 1.8.2 changelog )bin
o mesmo debin/
?bin
irá ignorar arquivos chamados bin, enquantobin/
é para diretórios chamado binO
.gitignore
do seu sonho parece ser:no nível superior.
fonte
Eu acho que vale a pena mencionar para iniciantes do git:
Portanto, se você deseja adicionar para ignorar alguns diretórios em seu repositório local (que já existem) após a edição de .gitignore, você deseja executá-lo no diretório raiz
Basicamente, 'atualiza' seu repositório local e desinstala os arquivos ignorados.
Vejo:
http://git-scm.com/docs/git-rm ,
https://help.github.com/articles/ignoring-files/
fonte
git add -A
em meus commits, posso usar isso? e também posso substituir o ponto por -A na primeira linha?O
**
nunca funcionou corretamente antes, mas desde o git 1.8.2 (8 de março de 2013) , parece ser explicitamente mencionado e suportado:No seu caso, isso significa que agora esta linha pode ser suportada:
fonte
corresponde a maiúsculas e minúsculas
fonte
[B]in/
ser a única maiúsculasBin
pasta ignorar ebin
confirmar o git?[B]in/
irá cometerBin
ebin
.Bin/
!bin/
Não o vi mencionado aqui, mas isso parece fazer distinção entre maiúsculas e minúsculas. Depois que mudei para / Bin, os arquivos foram ignorados conforme o esperado.
fonte
bin
, nãoBin
.[Bb]in
resolverá o problema, mas ... Aqui está uma lista mais extensa de coisas que você deve ignorar (lista de exemplo do GitExtension):fonte
Se você está procurando um ótimo
.gitignore
arquivo global para qualquer solução do Visual Studio (.NET) - recomendo que você use este: https://github.com/github/gitignore/blob/master/VisualStudio.gitignoreAFAIK tem o mais abrangente
.gitignore
para projetos .NET.fonte
Etapa 1: adicione o seguinte conteúdo ao arquivo .gitignore.
Etapa 2: certifique-se de ter efeito
Se o problema persistir, é porque as configurações em .gitignore podem ignorar apenas arquivos que originalmente não foram rastreados . Se alguns arquivos já foram incluídos no sistema de controle de versão, a modificação de .gitignore é inválida. Para resolver esse problema completamente, é necessário abrir o Git Bash ou o Console do Gerenciador de Pacotes (veja a captura de tela abaixo) para executar os seguintes comandos na pasta raiz do repositório.
Em seguida, o problema será completamente resolvido.
fonte
Literalmente, nenhuma das respostas realmente funcionou para mim; o único que funcionou para mim foi (no Linux):
fonte
bin
nos subdiretórios também?Como um aviso;
Se você pensar
.gitignore
que não funciona de uma maneira (foo/*
pasta adicionada a ela, masgit status
ainda mostrando o conteúdo da pasta como modificado ou algo parecido com isso), use este comando;git checkout -- foo/*
fonte
para a versão 2.13.3 em diante, escrever apenas bin no seu arquivo .gitignore deve ignorar o bin e todos os seus subdiretórios e arquivos
fonte
Adicionar ** / bin / ao arquivo .gitignore fez o truque para mim (Nota: a pasta bin não foi adicionada ao índice).
fonte
Se o padrão dentro
.gitignore
terminar com uma barra/
, ele encontrará apenas uma correspondência com um diretório.Em outras palavras,
bin/
corresponderá a um diretóriobin
e caminhos abaixo dele, mas não corresponderá a um arquivo regular ou a um link simbólicobin
.Se o padrão não contém uma barra , como no
bin
Git, trata-o como um padrão de globos de casca (ganancioso). Então, o melhor seria usar simples/bin
.bin
não seria a melhor solução para esse problema em particular.fonte
/
?No meu caso, a codificação do arquivo gitignore era problemática, verifique se é UTF-8
fonte