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.
$XDG_CONFIG_HOME/git/ignore- Se
XDG_CONFIG_HOMEestiver vazia ou não definida,$HOME/.config/git/ignore
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.
| Tipo | Exemplos | Modelo 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 pessoais | escreva 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.
- Em projetos pessoais, ou se o time consegue orientar todos a configurar o global, deixe no global.
- Se não dá para controlar os colaboradores, como em código aberto, coloque pelo menos
.DS_StoreeThumbs.dbtambém no .gitignore do projeto.
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.