Apagando histórico de commits em um repo Git
Frequentemente nos deparamos com situações em que precisamos limpar os commits anteriores dos nossos repositórios, seja por um commit de um usuário que não deviria ou por limpar sujeiras. Em alguns lugares encontramos sugestões para excluir a pasta .git, porem este processo pode causar sérios problemas no seu repositório. Aqui demonstro uma maneira segura e eficaz de realizar essa tarefa, e é isso que compartilharemos neste artigo.
Passo 1: Criar uma nova Branch
Para listar, por exemplo, os últimos 10 commits que possuímos no repositório, podemos utilizar.
git log -10
Vamos iniciar criando uma nova branch no seu repositório a partir da atual. Isso significa que você criará uma nova branch que não tem histórico de commits, porem mantendo todos os arquivos intactos. Você pode fazer isso usando o seguinte comando:
git checkout --orphan new_branch
Substitua new_branch pelo nome que você deseja dar a sua branch.
Passo 2: Adicionar Todos os Arquivos
Agora que você está em uma nova branch , é hora de adicionar todos os arquivos.
git add -A
Isso adicionará todos os arquivos do diretório atual a new_branch.
Passo 3: Commit das Mudanças
Após adicionar todos os arquivos, é necessário fazer um commit dessas mudanças. Você pode usar o seguinte comando para fazer isso:
git commit -am "limpando commits anteriores"
Passo 4: Excluir o Branch Antigo
Agora que você tem um novo branch com o código atual e sem histórico de commits, pode excluir o branch antigo que deseja limpar. Por exemplo, se você deseja excluir a branch chamada de main
, use o seguinte comando:
git branch -D main
Passo 5: Renomear o Novo Branch
Agora, renomeie a branch para main
(ou o nome do branch que você deseja manter) usando o seguinte comando:
git branch -m main
Passo 6: Atualizar o Repositório Remoto
Finalmente, é necessário forçar a atualização do seu repositório remoto para refletir as mudanças. Use o seguinte comando:
git push -f origin main
Lembre-se de que este comando substituirá o branch main
no repositório remoto com o novo branch que você criou, limpando totalmente o histórico de commits, porem mantendo todos os arquivos.
Ate mais!