Manipular o histórico é muito comum para desenvolvedores que trabalham regularmente com Git. Na verdade, os desenvolvedores muitas vezes precisam remover commits do histórico do Git. Felizmente, o Git fornece muitos comandos para tornar esta operação possível.
Vamos ao que interessa 😎.
Passo 0 - Preparação
Antes de manipular o histórico do Git, certifique-se de que seu diretório de trabalho esteja livre de quaisquer alterações usando o comando git status .
Passo 1 – Excluir commits localmente
Para excluir commits de um servidor remoto, primeiro você precisará removê-los do seu histórico local.
1.1 Para commits consecutivos do topo
Se os commits que você deseja remover forem colocados no topo do seu histórico de commits, use o comando git reset --hard
com o objeto HEAD
e o número de commits que você deseja remover.
git reset --hard HEAD~1
Este comando removerá o commit mais recente .
git reset --hard HEAD~3
Este comando removerá os três últimos commits .
Você também pode remover até um commit específico usando o hash de um commit, assim:
git reset --hard <hash>
1.2 Para commits não consecutivos
Se, no entanto, você quiser remover commits não consecutivos, você precisará usar um rebase interativo.
- [] Encontre o último hash de commit contendo todos os commits que você deseja remover usando o comando
git reflog
. - [] Inicie um rebase interativo com
git rebase -i <hash>
. - [] Na tela de edição, encontre as linhas de commit que deseja remover e remova-as.
- [] Salvar e sair (pode ser necessário resolver os conflitos)
- [] Finalize o rebase interativo com
git rebase --continue
ou recomece abortando o rebase .
Passo 2 - Exclua os commits remotamente
Para excluir commits do controle remoto, você precisará enviar suas alterações locais para o controle remoto usando o comando git push .
git push origin HEAD --force
Como o seu histórico local diverge do histórico remoto, você precisa usar a opção force
.
Pensamentos finais
Como você pode ver, o Git facilita a exclusão de commits de um servidor remoto.
No entanto, você precisa ter cuidado ao usar o comando git push
com a opção force
porque você pode perder o progresso se não for cauteloso.
Obrigado por ler!