QUASE FUI HACKEADO: processo completo de COMO EVITEI ISSO
Numa sexta, terminei todas as minhas tasks, fiz o commit final da semana e fui dormir tranquilo.
Dois dias depois eu vi uma coisa que me deu um frio na barriga, eu tinha commitado o arquivo .env junto — o arquivo que guarda todas as senhas e chaves secretas do meu projeto.
Entrando em pânico, respirei fundo. E eu percebi que o problema não era só apagar o arquivo. Porque uma vez commitado, ele fica pra sempre no histórico do GIT.
E este é o processo completo que eu usei depois de ter me esquecido de colocar o .env no gitignore.
Primeiro passo: troquei todas as chaves expostas na hora. Fazendo isso as chaves antigas ficam inválidas imediatamente para qualquer uso indevido.
Segundo passo: adicionei o .env no gitignore usando o seguinte comando echo “.env” >> .gitignore . Mas você pode fazer isso manualmente.
E isso não para por aqui. Só apagar o arquivo não chega, mesmo depois de adicionar ao gitignore, o Git continua rastreando um arquivo que já foi commitado.
E para resolver isso, tirei ele do rastreio do Git com um comando específico — git rm --cached.
Depois fiz o commit para main usando estes comandos:
git add .
git commit -m "chore: remove .env from tracking and add to gitignore"
git push origin main
Fazendo isso tudo consegui resolver o problema, Isso remove o .env dos próximos commits, mas não do histórico. o histórico antigo ainda guarda o arquivo.
Para limpar esse histórico usei o git filter-repo que é uma ferramenta que reescreve todo o histórico do Git. Ela é usada para remover arquivos, segredos de todos os commits, como se eles nunca tivessem existido.
Então usei git filter-repo pra reescrever todo o histórico do zero, como se o vazamento nunca tivesse existido executei os seguintes comandos:
# Instala a ferramenta
pip install git-filter-repo
# Este Remove o .env de TODO o histórico, o .env desaparece completamente de todos os commits.
git filter-repo --path .env --invert-paths
# Force push — E este último reescreve o histórico no GitHub
git push origin --force --all
Isso foi o processo técnico. Mas a lição real não foi sobre Git. A lição foi: erro acontece. O que separa quem trava de quem resolve é o quão rápido você age depois.
RESUMO:
#troque todas as chaves expostas na hora.
# Adiciona ao .gitignore
echo ".env" >> .gitignore
# Remove o .env do tracking do Git mas mantém o ficheiro local
git rm --cached .env
# Commita a remoção
git add .gitignore
git commit -m "chore: remove .env from tracking and add to gitignore"
git push origin main
# Instala a ferramenta
pip install git-filter-repo
# Este Remove o .env de TODO o histórico, o .env desaparece completamente de todos os commits.
git filter-repo --path .env --invert-paths
# Force push — E este último reescreve o histórico no GitHub
git push origin --force --all