Por que .gitignore não funciona?

Geralmente o arquivo já é rastreado, a regra está em outro local ou o padrão não corresponde ao caminho esperado.

1. Verifique se o Git já rastreia o arquivo

As regras se aplicam a arquivos mantidos intencionalmente sem rastreamento. Adicionar um padrão não remove do índice um arquivo incluído em um commit anterior.

git ls-files -- path/to/file

Se o caminho aparecer, o arquivo é rastreado. Consulte o artigo correspondente:

Como ignorar arquivos que o Git já rastreia?

2. Identifique a regra aplicada

Execute a verificação no repositório com o caminho relativo real. A saída mostra o arquivo de regras e a linha de origem.

git check-ignore -v -- path/to/file

Use --no-index ao testar um arquivo já rastreado:

git check-ignore -v --no-index -- path/to/file

3. Confira a posição e a ordem dos padrões

Uma / inicial ancora o padrão no diretório do .gitignore; uma / final restringe a diretórios. Na mesma prioridade, regras posteriores podem substituir anteriores. ! pode reincluir um caminho, mas não um arquivo dentro de um diretório que o Git deixou de percorrer por estar excluído.

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

4. Confira outras fontes

O Git também lê .git/info/exclude e o arquivo global definido em core.excludesFile. Assim, um arquivo pode ser ignorado mesmo sem regra no .gitignore do projeto. Verifique a configuração global:

git config --get core.excludesFile

Por que uma regra global do Git ignora um arquivo?

Consulte as referências oficiais para conhecer o comportamento exato e mais detalhes: Documentação do Git