Como ignorar extensões? Usando * e **

*.log ignora nomes terminados em .log no alcance do .gitignore. Para um diretório específico, decida se quer incluir subdiretórios.

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

Como ignorar pastas? folder/ ou /folder/

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.log

Com /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.

Por que ! não mantém um arquivo em um diretório ignorado?

Consulte as referências oficiais para conhecer o comportamento exato e mais detalhes: Documentação do Git · Documentação de git check-ignore