Como Remover Arquivos Sensíveis do Histórico Git com git filter-repo e Reconfigurar o Remote
Introdução
É comum, por engano, arquivos sensíveis como
.env
acabarem sendo versionados em um repositório Git. Mesmo após removê-los e fazer um novo commit, esses arquivos ainda permanecem acessíveis no histórico de commits do repositório. Para garantir que dados confidenciais sejam realmente eliminados de todo o histórico, é necessário reescrever o histórico do Git.
Ferramenta Recomendada: git filter-repo
O
git filter-repo
é a ferramenta oficial e moderna para reescrever o histórico de repositórios Git, substituindo o antigo
git filter-branch
. Ele é muito mais rápido, seguro e fácil de usar.
Passo a Passo: Removendo o .env do Histórico
1. Instale o
git-filter-repo
Se você ainda não tem, instale:
bashCopyInsert in Terminalpip install git-filter-repo
2. Execute o comando para remover o arquivo do histórico
No diretório raiz do seu projeto, rode:
bashCopyInsert in Terminalgit filter-repo --force --path .env --invert-paths
-
-path .envespecifica o arquivo a ser removido. -
-invert-pathsfaz com que todos os arquivos exceto sejam mantidos..env
3. Por que o remote some após o filtro?
Por padrão, o
git filter-repo
remove as configurações de remotes
(como
origin
) para evitar que você faça um push acidental de um histórico reescrito para um repositório remoto, o que poderia sobrescrever dados importantes para outros colaboradores.
4. Adicione novamente o remote
Após o filtro, readicione o remote:
bashCopyInsert in Terminalgit remote add origin https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git
5. Faça o push forçado para o repositório remoto
Como o histórico foi reescrito, é necessário um push forçado:
bashCopyInsertgit push origin --force --all git push origin --force --tags
Atenção: Todos os colaboradores precisarão re-clonar o repositório após essa operação, pois o histórico antigo não será mais compatível.
Resumo Visual do Fluxo
# Remover o arquivo do histórico git filter-repo --force --path .env --invert-paths # Adicionar o remote novamente git remote add origin https://github.com/SEU_USUARIO/SEU_REPOSITORIO.git # Push forçado para atualizar o repositório remoto git push origin --force --all git push origin --force --tags
Dicas Finais
-
Use o apenas se tiver certeza do impacto nos colaboradores.
git filter-repo -
Para arquivos já expostos em repositórios públicos, troque imediatamente todas as credenciais e segredos.