Por que uma regra global do Git ignora um arquivo?

Um arquivo pode ser ignorado sem correspondência no .gitignore do projeto. Localize a origem antes de mudar a configuração.

1. Identifique a regra

Na raiz do repositório, substitua path/to/file pelo caminho real de um arquivo não rastreado:

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

A saída detalhada mostra arquivo fonte, linha e padrão: .gitignore, .git/info/exclude ou arquivo global. ! reinclui um caminho. A ausência de saída também pode indicar que o arquivo já é rastreado; verifique separadamente.

2. Localize o arquivo global configurado

Confira o valor efetivo de core.excludesFile e o arquivo de configuração que o define:

git config --show-origin --get core.excludesFile

Sem saída e com código 1, essa opção não está definida; isso não desativa exclusões globais. O Git também consulta $XDG_CONFIG_HOME/git/ignore, ou $HOME/.config/git/ignore se XDG_CONFIG_HOME estiver vazio ou indefinido. Comece pela origem informada por check-ignore.

3. Altere a fonte correta e verifique

Regras compartilhadas ficam em .gitignore; pessoais de um repositório em .git/info/exclude; pessoais de vários repositórios no arquivo global. Alterar regras globais afeta outros repositórios, então não remova toda a configuração por um caminho. .gitignore tem prioridade sobre .git/info/exclude e core.excludesFile. Uma exceção do projeto pode sobrepor uma exclusão de menor prioridade se nenhum pai continuar excluído. Confira novamente o caminho real:

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

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 · Documentação de configuração do Git