Reescrevendo o Histórico com git filter-repo
Aprenda a reescrever o histórico de um repositório em grande escala para remover arquivos grandes ou dados confidenciais usando git filter-repo.
Reescrevendo o Histórico com git filter-repo é uma aula grátis de Git & GitHub Professional Workflow no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Git & GitHub Professional Workflow, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Git & GitHub Professional Workflow inclui 4 aulas no total.
Por que reescrever o histórico
Às vezes, é necessário reescrever todo o histórico de um repositório: para remover uma senha vazada, excluir arquivos enormes confirmados acidentalmente ou corrigir os e-mails de autor em todas as confirmações.
Conheça o git filter-repo
O git filter-repo é a ferramenta moderna e rápida para reescrever o histórico. Ela substitui o antigo e lento git filter-branch.
Instalando a ferramenta
É um programa separado, geralmente instalado por meio do pip ou de um gerenciador de pacotes.
pip install git-filter-repoTrabalhe sempre em um clone
Reescrever o histórico é uma operação destrutiva. Trabalhe em um clone novo para poder descartá-lo se algo der errado.
git clone --mirror git@github.com:you/repo.gitRemovendo um arquivo do histórico
Para eliminar um arquivo de todas as confirmações, use as opções --path e --invert-paths.
git filter-repo --path secrets.env --invert-pathsRemovendo objetos grandes
Você pode remover arquivos acima de um limite de tamanho para reduzir um repositório inchado.
git filter-repo --strip-blobs-bigger-than 10MReescrevendo e-mails de autor
Corrija um e-mail de autor incorreto em todas as confirmações usando um mapa de e-mails ou uma função de retorno de chamada.
git filter-repo --mailmap my-mailmap.txtSubstituindo texto no histórico
Limpe as sequências secretas em todos os locais onde aparecem usando um arquivo de expressões.
git filter-repo --replace-text expressions.txtOs hashes das confirmações mudam
A reescrita do histórico produz novos hashes de confirmação para tudo o que foi afetado. O histórico do repositório diverge de todas as cópias antigas.
Enviando o resultado à força
Após a reescrita, você precisa enviar as alterações à força, pois o histórico remoto não corresponde mais ao local.
git push --force --allCoordene com sua equipe
Como os clones de todos agora estão desatualizados, os colegas de equipe precisam clonar novamente. Anuncie a reescrita para evitar que os dados removidos sejam restaurados.
Verificação rápida
Teste sua compreensão sobre a reescrita do histórico.
Recapitulação
Você aprendeu a reescrever o histórico:
git filter-reposubstitui filter-branch- Remova arquivos, objetos grandes ou texto secreto de todo o histórico
- Trabalhe sempre em um clone; os hashes de confirmação mudam
- Envie as alterações à força e peça à equipe que clone novamente depois
Perguntas Frequentes
A aula “Reescrevendo o Histórico com git filter-repo” é grátis?
Sim — o texto completo de “Reescrevendo o Histórico com git filter-repo” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Git & GitHub Professional Workflow, atualize para CoddyKit PRO. O curso de Git & GitHub Professional Workflow inclui 4 aulas no total.
O que vou aprender em “Reescrevendo o Histórico com git filter-repo”?
Aprenda a reescrever o histórico de um repositório em grande escala para remover arquivos grandes ou dados confidenciais usando git filter-repo. Você pratica Git & GitHub Professional Workflow com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Git & GitHub Professional Workflow?
Nenhuma experiência prévia é necessária. Git & GitHub Professional Workflow no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Reescrevendo o Histórico com git filter-repo”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Git & GitHub Professional Workflow?
Sim. Cada aula de Git & GitHub Professional Workflow inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Git Reflog e recuperação do histórico
- Git Bisect para depuração
- Manutenção e organização do repositório
- Reescrevendo o Histórico com git filter-repo