PureTools

.gitignore: O Que Excluir do Seu Repositório

PureTools Team· 8 min de leitura
.gitignore: O Que Excluir do Seu Repositório

.gitignore: Mantenha Seu Repositório Limpo

Todo projeto tem arquivos que não deveriam estar no controle de versão: artefatos de build, dependências, segredos, configs de editor, lixo do SO. Um .gitignore bem escrito mantém seu repo limpo e seus segredos seguros. Um que falta vaza arquivos .env no GitHub.

Sintaxe de Padrões

# Comentários começam com #

# Ignorar um arquivo específico
.env
secrets.json

# Ignorar um diretório (barra no final)
node_modules/
dist/
build/

# Wildcard — corresponde a quaisquer caracteres exceto /
*.log
*.tmp
*.swp

# Duplo asterisco — corresponde a qualquer profundidade de diretório
**/test-results/
src/**/*.test.js

# Negação — re-incluir algo
*.log
!important.log

# Interrogação — corresponde a um único caractere
temp?.txt    # temp1.txt, tempA.txt, mas não temp10.txt

.gitignore Essencial por Stack

Node.js / JavaScript:

node_modules/
dist/
build/
.next/
.nuxt/
.output/
coverage/
*.log
npm-debug.log*
.env
.env.local
.env.*.local

Python:

__pycache__/
*.py[cod]
*$py.class
*.so
.Python
venv/
env/
.venv/
*.egg-info/
dist/
build/
.eggs/
.pytest_cache/
.mypy_cache/
.env

Go:

# Binários Go
*.exe
*.exe~
*.dll
*.so
*.dylib

# Binário de teste
*.test

# Saída
*.out
vendor/
.env

Java:

*.class
*.jar
*.war
*.ear
target/
build/
.gradle/
.settings/
.classpath
.project
*.iml
.idea/

Arquivos que Você NUNCA Deve Commitar

ArquivoPor Quê
.envContém chaves de API, senhas de banco, segredos
*.pem, *.keyChaves privadas e certificados
credentials.jsonChaves de service account (GCP, AWS)
*.sqlite, *.dbBancos de dados locais com dados potencialmente sensíveis
id_rsa, id_ed25519Chaves privadas SSH
.npmrc com tokensTokens de autenticação de registry

Já Commitou um Segredo?

Adicionar um arquivo ao .gitignore não o remove do histórico. Se você commitou um segredo:

# 1. Remover o arquivo do tracking (mantém localmente)
git rm --cached .env

# 2. Adicionar ao .gitignore
echo '.env' >> .gitignore

# 3. Commitar a remoção
git commit -m "Remove .env from tracking"

# 4. ROTACIONE O SEGREDO — ele já está no histórico do git
# Qualquer pessoa que clonou o repo tem ele

Para remoção completa do histórico, use git filter-branch ou BFG Repo-Cleaner. Mas a abordagem mais segura é sempre rotacionar a credencial comprometida.

.gitignore Global

Para arquivos específicos do seu SO e editor (não do projeto), use um gitignore global:

# Configurar gitignore global
git config --global core.excludesfile ~/.gitignore_global

# ~/.gitignore_global
.DS_Store
Thumbs.db
*.swp
*.swo
*~
.vscode/settings.json
.idea/
*.sublime-workspace

Isso mantém os .gitignore do projeto focados em padrões específicos do projeto, não preferências individuais de cada dev.

Debugando .gitignore

# Verificar por que um arquivo é ignorado
git check-ignore -v caminho/para/arquivo
# .gitignore:3:*.log    caminho/para/arquivo.log

# Listar todos os arquivos ignorados
git status --ignored

# Forçar adição de arquivo ignorado (não recomendado)
git add -f caminho/para/arquivo-ignorado

Gere seu .gitignore: Gerador de .gitignore — selecione sua stack e obtenha um arquivo .gitignore completo instantaneamente.