Como usar o .gitignore: Gerenciando arquivos que você quer excluir do rastreamento
Nos artigos anteriores, aprendemos as operações básicas com o Git e o GitHub. No entanto, ao executar `git status` em um projeto real, você já se sentiu confuso ao ver aparecerem arquivos gerados automaticamente pelo sistema operacional (como o `.DS_Store` no Mac), informações confidenciais como senhas, ou uma grande quantidade de arquivos de dependências (como `node_modules`), e se perguntou: "Eu realmente preciso gerenciar tudo isso?"
Neste artigo, explicaremos em detalhes como usar o arquivo "`.gitignore`" para excluir intencionalmente do rastreamento os arquivos e pastas que não precisam, ou não deveriam, estar sob o controle do Git. Usando o `.gitignore` corretamente, você poderá manter seus repositórios limpos e gerenciar seus projetos de forma segura.
O que é .gitignore? Por que é necessário excluir arquivos?
`.gitignore`, como o nome sugere, é simplesmente um arquivo de texto onde se lista os arquivos e pastas que você quer que o Git "ignore". Ao colocar este arquivo no diretório raiz do seu projeto, o Git excluirá os arquivos que correspondem aos padrões escritos nele da visualização do `git status` e do alvo do `git add`.
Então, por que é necessário excluir arquivos? Existem três razões principais:
- 1. Prevenir a inclusão de informações confidenciais: Enviar por engano para um repositório público do GitHub arquivos de configuração (como `.env`) que contêm senhas de banco de dados ou chaves de API pode levar a incidentes de segurança graves.
- 2. Excluir arquivos gerados automaticamente: Os arquivos de configuração que o sistema operacional ou os editores geram automaticamente (`.DS_Store`, `.vscode/`), as enormes pastas de dependências geradas por `npm install` (`node_modules/`), ou os arquivos gerados durante a compilação (`dist/`), podem ser regenerados automaticamente em outros ambientes, por isso não é necessário incluí-los no controle de versão.
- 3. Manter o repositório limpo: Limitar o controle de versão apenas ao código-fonte essencial escrito por humanos torna o repositório mais limpo e fácil de entender, o que facilita a participação de outras pessoas no projeto.
Sintaxe e regras básicas do .gitignore
A sintaxe do `.gitignore` é muito simples. Basta criar um arquivo chamado `.gitignore` na raiz do seu projeto (onde se encontra a pasta `.git`) e escrever os nomes dos arquivos ou pastas que quer excluir, um por linha.
Exemplo de sintaxe básica:
# Linhas que começam com '#' são tratadas como comentários
# Excluir especificando um nome de arquivo concreto
debug.log
config_secret.php
# Excluir um diretório inteiro (a barra final é opcional)
node_modules/
dist
# Excluir todos os arquivos com uma extensão específica
*.log
*.tmp
# Regra de exceção: Usar '!'
# Ignorar tudo o que há no diretório logs, mas incluir important.log no rastreamento
logs/
!logs/important.log
Você também pode usar curingas (`*`), o que permite uma configuração flexível. Pode gerar facilmente uma lista de arquivos que deveriam ser excluídos em qualquer projeto em sites como o gitignore.io, pelo que pode ser uma boa ideia utilizá-los.
Na prática! Passos para criar um `.gitignore` e ignorar arquivos
Agora, vamos criar um `.gitignore` na prática e confirmar que os arquivos desnecessários deixam de ser rastreados.
Passo 1: Crie o arquivo `.gitignore`
Primeiro, crie um arquivo `.gitignore` no diretório raiz do seu projeto. Como o nome do arquivo começa com um ponto, pode ser difícil criá-lo com um explorador de arquivos com GUI. A forma mais segura é executar o seguinte comando no terminal (ou Git Bash).
touch .gitignore
Passo 2: Escreva os arquivos e pastas que quer excluir
Abra o arquivo `.gitignore` que criou com um editor de texto e escreva os itens que se costumam excluir no desenvolvimento web.
# Arquivos do SO / Editor
.DS_Store
.vscode/
# Dependências
node_modules/
# Arquivos de log
*.log
npm-debug.log*
# Variáveis de ambiente
.env
Depois de editar o arquivo, não se esqueça de o guardar.
Passo 3: Faça commit do próprio `.gitignore`
Esta "regra de exclusão" em si é uma configuração importante que deve ser partilhada por todos os membros da equipe. Por isso, o próprio arquivo `.gitignore` deve ser incluído no controle de versões do Git e deve-se fazer commit dele.
git add .gitignore
git commit -m "Adicionar arquivo .gitignore"
Passo 4: Verifique que funciona
Vamos verificar se os arquivos são realmente ignorados. Crie um arquivo chamado `debug.log`, que incluímos na nossa lista de ignorados.
echo "Este é um registo de depuração." > debug.log
Agora, tente executar `git status`.
git status
Que tal? `debug.log` não deverá aparecer na lista de "Untracked files" e deverá ser completamente ignorado. Conseguiste!
Nota importante: O que fazer com os arquivos que já foram commitados?
Um erro comum em que os principiantes caem é o de "fazer commit de um arquivo importante e depois adicioná-lo à pressa a `.gitignore`". No entanto, `.gitignore` só tem efeito sobre os arquivos que nunca antes foram rastreados pelo Git.
Se quiser deixar de gerir com o Git um arquivo que já está a ser rastreado (por exemplo, `secret-key.php`), precisa de o remover da lista de seguimento do Git (o índice) com o seguinte comando.
git rm --cached [nome_do_arquivo]
Este comando é seguro, pois não elimina o arquivo em si do seu PC, mas apenas o "remove do seguimento do Git". Depois de o executar, não se esqueça de fazer commit desta alteração juntamente com as modificações do seu `.gitignore`.
git commit -m "Deixar de rastrear secret-key.php"