Todo repositório Git precisa de um .gitignore. É a lista em texto plano de caminhos que o Git **não** deve rastrear: artefatos de build, pastas de dependências, configs de IDE, lixo do SO como .DS_Store. Sem ele, o primeiro commit arrasta sem querer node_modules/, .env e target/, e desfazer essa bagunça é bem mais chato do que deixar o arquivo certo desde o início.
Cada ecossistema ignora coisas diferentes, e a maioria dos projetos cruza vários. Um app típico de Node + TypeScript num Mac com VS Code já precisa da união de quatro listas. Escrever isso de cabeça significa esquecer coverage/, vazar um .env ou commitar um .idea/ perdido de um colega que usa JetBrains.
Por isso este gerador empacota templates curados do projeto canônico github/gitignore - as mesmas regras das sugestões oficiais do GitHub - e permite empilhar. Marque as caixas, e a ferramenta emite um único .gitignore deduplicado pronto para colar no repo. Sem contas, sem upload, tudo no navegador.
O que você aprende montando seu .gitignore
Padrões de .gitignore usam glob: *.log ignora todo log, build/ ignora uma pasta, !important.log reinclui um arquivo mesmo que um glob o capture.
Padrões se aplicam relativos à pasta do .gitignore - um .gitignore em src/ só afeta arquivos sob src/.
Arquivos já rastreados **não** ficam ignorados retroativamente. Se você commitou node_modules/ e depois adicionou ao .gitignore, ainda precisa de git rm -r --cached node_modules para destrackear.
Como gerar um .gitignore passo a passo
1
Escolha um preset (opcional)
Se o projeto bate com uma combinação comum - Next.js, Django, Rails - clique no preset para marcar as caixas relevantes. Depois ajuste, adicionando ou removendo algumas.
2
Adicione suas linguagens
Cada linguagem tem artefatos: Node tem node_modules/, Python tem __pycache__/ e virtualenvs, Java tem target/ e .class. Marque as linguagens que o projeto compila de fato.
3
Adicione seus frameworks
Sobre as regras de linguagem, frameworks adicionam diretórios próprios: Next.js quer .next/ e .vercel, Django quer staticfiles/ e db.sqlite3, Rails quer tmp/ e /storage/*. Marque o que você usa.
4
Adicione editores e SO
Inclua os templates dos editores do **time** (não só os seus) - se alguém usa JetBrains ou Vim, marque. Depois adicione os SOs do time: macOS solta .DS_Store, Windows solta Thumbs.db, ambos são fáceis de commitar sem querer.
5
Copie ou baixe
O painel direito mostra a saída combinada e deduplicada. Clique em **Copiar** para colar num .gitignore na raiz, ou em **Baixar** para salvar o arquivo direto.
O mínimo para qualquer projeto Node compartilhado com colega no macOS. Mesmo um projeto pequeno deveria ter essas regras - sem .DS_Store e node_modules/ você briga com conflitos inúteis.
Um backend Django típico desenvolvido no PyCharm. Note que o db.sqlite3 local é ignorado - produção não usa e commitar vaza dados de dev e quebra os clones fresh dos colegas.
Sobrescreva uma regra com uma negação
Ignore todos os logs exceto um
*.log
!keep-me.log
A primeira linha ignora todo .log. !keep-me.log reinclui esse arquivo específico. Negações só funcionam para arquivos que uma regra anterior ignorou - não dá para reincluir arquivo dentro de pasta ignorada.
Erros comuns com .gitignore
Adicionar .gitignore depois e esperar que arquivos já commitados desapareçam. Não desaparecem - você precisa de git rm -r --cached <caminho> para destrackear.
Commitar um .env uma vez. Um único commit deixa o segredo no histórico para sempre. Coloque .env* no .gitignore **antes** do primeiro commit e troque qualquer segredo que tenha escapado.
Esquecer o ruído de SO em repos compartilhados. Se um único colega usa macOS e o repo não ignora .DS_Store, esses arquivos vão aparecer em toda PR.
Gerador de .gitignore - Perguntas frequentes
De onde vêm esses templates?
Vêm do projeto open-source github/gitignore - mesma fonte que o GitHub usa quando você marca "adicionar .gitignore" ao criar um repo. Reduzimos cada template às regras que os times realmente usam e agrupamos por categoria.
Devo commitar o próprio arquivo .gitignore?
Sim. O .gitignore foi feito para ser versionado e compartilhado. É o *contrato* sobre o que rastrear ou não. A exceção são preferências pessoais (ex. seu editor) - essas vão no ~/.gitignore_global global.
Como destrackeio um arquivo já commitado?
Primeiro adicione ao .gitignore, depois rode git rm --cached <caminho> (ou git rm -r --cached <pasta>) para remover do índice sem apagar do disco. Commite as duas mudanças juntas para os colegas verem.
Posso ter vários .gitignore no mesmo repo?
Sim. O Git procura um .gitignore em cada diretório e aplica as regras àquele subárvore. Útil em monorepos onde frontend e backend têm regras bem diferentes - regras comuns no root e regras específicas em cada pacote.
Qual a diferença entre .gitignore e .git/info/exclude?
.gitignore é commitado e compartilhado com o time. .git/info/exclude vive só no seu clone local e serve para exclusões pessoais que você não quer pushar. Para exclusões em todos os seus repos, use ~/.gitignore_global.