1. Entenda o padrão que falha
Considere build/keep.txt e build/discard.txt não rastreados na raiz. Estas regras excluem o próprio build: o Git não entra nele para encontrar keep.txt. A exceção posterior não recupera esse arquivo.
/build/
!/build/keep.txt 2. Ignore o conteúdo e mantenha um arquivo
Substitua as duas regras pelas seguintes no .gitignore da raiz. build continua acessível, o conteúdo direto é ignorado e keep.txt é reincluído. Exceções mais profundas exigem que todos os diretórios pais possam ser percorridos.
Na mesma prioridade, a última regra correspondente prevalece. Coloque a exceção depois da exclusão e revise também outras regras e arquivos .gitignore aninhados.
/build/*
!/build/keep.txt 3. Verifique ambos os arquivos
Crie os dois arquivos e execute os comandos na raiz. A saída detalhada deve mostrar !/build/keep.txt para keep.txt e /build/* para discard.txt. Uma regra com ! indica reinclusão, não exclusão.
git check-ignore -v -- build/keep.txt build/discard.txtO status deve listar build/keep.txt como não rastreado e omitir build/discard.txt. Se já forem rastreados, consulte o artigo específico: regras de exclusão não alteram o índice.
git status --short --untracked-files=all -- build/ Consulte as referências oficiais para conhecer o comportamento exato e mais detalhes: Documentação do Git · Documentação de git check-ignore