Tenho visto perguntas semelhantes ( 1 , 2 e 3 ), mas não consigo obter uma solução adequada delas.
Preciso ignorar todos os arquivos em uma pasta específica, exceto para um tipo de arquivo específico. A pasta é um subdiretório do caminho raiz. Deixe-me nomear a pasta Resources
. Já que não quero complicar as coisas, deixe-me ignorar os arquivos em todas as pastas nomeadas Resources
onde quer que estejam.
Esta é a solução mais comum (em todas as perguntas duplicadas)
# Ignore everything
*
# Don't ignore directories, so we can recurse into them
!*/
# Don't ignore .gitignore
!.gitignore
# Now exclude our type
!*.foo
O problema com essa solução é que ela para de rastrear arquivos recém-adicionados (uma vez que *
ignora todos os arquivos). Não quero ficar excluindo cada tipo de arquivo. Eu quero um comportamento normal onde se qualquer novo arquivo for adicionado, git status
mostre-o.
Finalmente encontrei uma solução aqui . A solução é adicionar outro .gitignore
arquivo na Resources
pasta. Isso funciona corretamente.
Posso conseguir o mesmo com um arquivo para ignorar? Acho que ter muitos arquivos para ignorar em diferentes diretórios é um pouco desajeitado.
Isso é o que estou tentando alcançar:
# Ignore everything under Resources folder, not elsewhere
Resources
# Don't ignore directories, so we can recurse into them
!*Resources/
# Now exclude our type
!*.foo
Mas isso dá a saída oposta. Ele ignora *.foo
tipos e rastreia outros arquivos.
DirectoryName1/** DirectoryName1/**/*
para cada um deles. Primeiro removem diretórios, mas você precisa do segundo para remover todos os tipos de arquivo.