1. Ignore uma extensão no projeto inteiro
No .gitignore da raiz, o padrão corresponde a app.log, logs/app.log e src/app.log. * representa zero ou mais caracteres exceto /; sem barras no padrão, o Git verifica nomes em qualquer profundidade abaixo desse .gitignore.
Escreva um padrão por linha. São padrões Git, não comandos shell nem expressões regulares: *.{log,tmp} não é uma lista de extensões nessa sintaxe.
*.log 2. Limite o padrão a um diretório
A primeira alternativa corresponde a logs/app.log, mas não a logs/archive/app.log. A segunda corresponde aos dois: /**/ permite zero ou mais diretórios intermediários. Nenhuma corresponde a src/app.log.
Teste uma alternativa por vez. /logs/ pode ocultar arquivos aninhados ao excluir o pai; verifique outras regras antes de avaliar um curinga.
/logs/*.log/logs/**/*.log 3. Confira caminhos representativos
Escolha uma regra, crie os três arquivos não rastreados e confira os padrões correspondentes:
git check-ignore -v -- logs/app.log logs/archive/app.log src/app.logCom /logs/**/*.log, os dois caminhos sob logs devem corresponder, mas src/app.log não. Uma correspondência começando com ! é uma exceção; mantenha os diretórios pais acessíveis.
Consulte as referências oficiais para conhecer o comportamento exato e mais detalhes: Documentação do Git · Documentação de git check-ignore