Regras de ignorar só suas com .git/info/exclude
Como escrever em .git/info/exclude regras pessoais de um único repositório sem mexer no .gitignore, quando isso é útil e qual a precedência.
O .gitignore é commitado e compartilhado com todos. Às vezes, porém, há arquivos que só você quer ignorar neste repositório: anotações pessoais, scripts de experimento, pastas criadas pelos plugins do seu editor. Para isso existe o .git/info/exclude.
Onde fica
Ao executar git init ou git clone, o arquivo .git/info/exclude é criado automaticamente. É um arquivo vazio, com apenas algumas linhas de comentário.
cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...
Como fica dentro do diretório .git, ele não é commitado nem enviado a ninguém no push. A sintaxe é exatamente a mesma do .gitignore. Para descobrir o local exato, inclusive quando você usa várias worktrees, rode git rev-parse --git-path info/exclude.
Quando usar
| Situação | Exemplos | Local recomendado |
|---|---|---|
| Arquivos pessoais usados só neste repositório | notes.md, scratch/, todo.txt | .git/info/exclude |
| Arquivos pessoais comuns a todos os repositórios | .DS_Store, *.swp | gitignore global |
| Regras necessárias para todo o time | node_modules/, dist/, .env | .gitignore |
É especialmente útil ao contribuir com o repositório de outras pessoas. Se você alterar o .gitignore do projeto para bloquear arquivos criados pelas suas ferramentas, os revisores podem não querer essa mudança. Escrevendo em .git/info/exclude, o histórico de commits fica intacto.
echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status # não aparecem mais
Precedência
Entre as fontes de regras, .git/info/exclude fica abaixo do .gitignore e acima do arquivo global.
- Padrões da linha de comando
.gitignore(arquivos de subdiretórios sobrepõem os de cima).git/info/excludecore.excludesFile
Por isso não é possível reincluir, com uma regra ! em .git/info/exclude, um arquivo que o .gitignore ignora. Conferindo na prática:
# .gitignore : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x x
Cuidados
- Não tem efeito sobre arquivos já rastreados. Assim como no .gitignore, regras de ignorar só se aplicam a arquivos não rastreados.
- Um novo clone volta com este arquivo no estado padrão. Se precisar das mesmas regras em vários computadores, o gitignore global é melhor.
- Se você copiar o repositório para uma pasta compartilhada incluindo o diretório
.git, as regras vão junto.
Referências
- Documentação oficial do gitignore: $GIT_DIR/info/exclude
- GitHub Docs: Excluding local files without creating a .gitignore file
- Verificado em: 2026-09-23 (exemplo de precedência conferido com git 2.50.1)