1. O Que E o .gitignore
O arquivo .gitignore e um arquivo de configuracao do Git que instrui o sistema de controle de versao a ignorar determinados arquivos e diretorios ao rastrear mudancas em um repositorio. Arquivos listados no .gitignore nao aparecem como "untracked" e nao sao incluidos em commits, a menos que ja estejam sendo rastreados.
Todo projeto que usa Git deve ter um .gitignore bem configurado. Sem ele, e comum que dependencias (node_modules/, vendor/), arquivos de build (dist/, target/), configuracoes locais (.env) e artefatos de IDEs (.idea/, .vscode/) acabem sendo commitados acidentalmente, poluindo o repositorio e potencialmente expondo informacoes sensiveis.
2. Sintaxe e Padroes
O .gitignore usa uma sintaxe de globbing simples, mas poderosa:
- Linha em branco: ignorada (serve de separador visual).
- #: comentario — o Git ignora a linha inteira.
- *: curinga que corresponde a qualquer sequencia de caracteres (exceto /).
- **: corresponde a qualquer numero de diretorios intermediarios.
- /: no inicio ancora o padrao na raiz do repositorio; no final indica diretorio.
- !: prefixo de negacao — re-inclui um arquivo que seria ignorado por uma regra anterior.
Exemplos: *.log ignora todos os arquivos .log; build/ ignora o diretorio build em qualquer nivel; !important.log re-inclui um arquivo especifico mesmo que *.log o ignoraria.
3. Por Que Usar um .gitignore Correto
Um .gitignore inadequado causa problemas reais e recorrentes em equipes de desenvolvimento:
- Seguranca: arquivos .env com senhas, tokens de API e credenciais de banco de dados nao devem estar no repositorio. Vazamentos acontecem todo dia em projetos publicos no GitHub por falta de um .gitignore correto.
- Performance: node_modules ou .gradle podem ter dezenas de milhares de arquivos. Sem ignorar esses diretorios, comandos como git status ficam lentos e o repositorio cresce desnecessariamente.
- Colaboracao: arquivos de configuracao local de IDEs (.idea/, .vscode/) geram conflitos desnecessarios entre membros da equipe com preferencias diferentes.
- Reproducibilidade: builds devem ser reproduziveis a partir do codigo-fonte, nao de artefatos compilados commitados.
"Um .gitignore correto desde o inicio do projeto poupa horas de trabalho de limpeza e evita expor informacoes sensiveis em repositorios publicos."
4. gitignore Global vs. Por Projeto
Ha dois tipos principais de .gitignore:
- Por projeto: o arquivo .gitignore na raiz (ou em subdiretorios) do repositorio. Aplica regras especificas daquele projeto e deve ser commitado junto com o codigo para que toda a equipe compartilhe as mesmas exclusoes.
- Global (~/.gitignore_global): configurado via
git config --global core.excludesfile, aplica regras para todos os repositorios da maquina do usuario. Ideal para exclusoes especificas do seu ambiente de trabalho (macOS/.DS_Store, configuracoes da sua IDE favorita) que nao devem ser impostas a toda a equipe.
A boa pratica e combinar os dois: o .gitignore do projeto cobre as tecnologias do stack, e o .gitignore_global cobre preferencias pessoais e de sistema operacional.
5. Erros Comuns
Os erros mais frequentes relacionados ao .gitignore incluem:
- Nao criar o .gitignore antes do primeiro commit: se um arquivo ja foi rastreado, adiciona-lo ao .gitignore nao o remove do historico. E preciso usar
git rm --cachedpara parar de rastrear. - Commitar o .env com credenciais: um dos erros mais perigosos. Use .gitignore + ferramentas de secret scanning para prevenir.
- Usar regras muito amplas: padroes como * ou / ignoram tudo — incluindo o proprio .gitignore. Seja especifico.
- Esquecer IDEs da equipe: se o time usa ferramentas diferentes, o .gitignore deve cobrir todas elas.
6. Perguntas Frequentes
Como remover um arquivo ja rastreado do Git?
Execute git rm --cached nome-do-arquivo (ou git rm -r --cached pasta/ para diretorios). Isso para o rastreamento sem deletar o arquivo localmente. Depois adicione ao .gitignore e commite a remocao.
O .gitignore deve ser commitado?
Sim, o .gitignore de projeto deve sempre ser commitado. Ele faz parte da configuracao do repositorio e garante que toda a equipe ignore os mesmos arquivos. Excecao: regras especificas da sua maquina pertencem ao gitignore global.
Posso ter varios arquivos .gitignore no mesmo repositorio?
Sim. O Git aceita um .gitignore em cada subdiretorio, e as regras se aplicam a partir daquele nivel. Isso permite regras especificas por modulo em monorepos ou projetos com estruturas complexas.