guide

Como configurar um gitignore global (core.excludesFile)

Como configurar core.excludesFile para ignorar em todos os repositórios arquivos do seu ambiente pessoal, como o .DS_Store do macOS e arquivos de editor, e qual é o caminho padrão.

Arquivos como .DS_Store, Thumbs.db, .idea/workspace.xml e *.swp não surgem por causa do projeto, e sim por causa do seu computador e do seu editor. O gitignore global é o lugar para escrever essas regras uma única vez, em vez de repeti-las em cada repositório.

Caminho padrão

Mesmo sem configurar nada, o git lê o seguinte arquivo como lista global de ignorados.

Ou seja, na maioria dos ambientes macOS e Linux basta criar o arquivo ~/.config/git/ignore.

mkdir -p ~/.config/git
printf '.DS_Store\n*.swp\n.idea/workspace.xml\n' >> ~/.config/git/ignore

Para usar outro arquivo: core.excludesFile

Para usar um arquivo no caminho que quiser, configure core.excludesFile. Com esse valor definido, o git lê esse arquivo no lugar do caminho padrão.

# macOS / Linux
git config --global core.excludesFile ~/.gitignore_global

# Windows (PowerShell)
git config --global core.excludesFile "$env:USERPROFILE\.gitignore_global"

Confira se a configuração foi aplicada com o comando abaixo.

git config --global --get core.excludesFile

Se nada for exibido, o valor não está definido e o caminho padrão acima é usado.

O que colocar no global

O que combina com o global são arquivos pessoais que surgem da mesma forma em qualquer projeto.

TipoExemplosModelo recomendado
Sistema operacional.DS_Store, ._*, Thumbs.db, desktop.ini, *~macOS, Windows, Linux
Estado pessoal de editor/IDE*.swp, .idea/workspace.xml, arquivos pessoais em .vscode/*Vim, JetBrains, VisualStudioCode
Ferramentas pessoais.envrc (direnv), pasta de anotações pessoaisescreva você mesmo

Se você escolher apenas modelos como macOS e JetBrains no gerador e copiar o resultado, ele já serve como conteúdo do arquivo global.

Por outro lado, saídas de build, pastas de dependências e arquivos secretos vão no .gitignore do projeto, e não no global, porque essas regras precisam valer para todos que clonam o repositório.

Limites de deixar no global

O gitignore global vale só no seu computador. Se um colega não configurou o global, o .DS_Store dele ainda pode ser commitado. Por isso o próprio repositório de modelos do GitHub orienta tanto colocar os modelos Global no arquivo global quanto mesclá-los aos modelos do projeto.

Na prática, este critério funciona bem.

Precedência

O arquivo global tem a menor precedência entre as quatro fontes de regras. Mesmo que o global ignore *.log, se o .gitignore do projeto tiver !keep.log, o projeto vence. Na dúvida sobre qual regra foi aplicada, execute git check-ignore -v <caminho>. Se o caminho do arquivo global aparecer no início da saída, foi a regra global que decidiu.

Referências

← AnteriorPrecedência do gitignore e padrões de negação (!)