Sobes.tech
Junior

Como cancelar o último commit no sistema de controlo de versões?

sobes.tech IA

Resposta da IA

Existem várias formas de desfazer o último commit, dependendo de se foi enviado ao repositório remoto e do objetivo do cancelamento.

  1. Cancelar o commit local sem modificar os ficheiros (reset suave):

    git reset --soft HEAD~1
    # Restaura o HEAD a um commit atrás, deixando as alterações no índice (staged).
    
  2. Cancelar o commit local deixando as alterações no diretório de trabalho (reset misto - padrão):

    git reset HEAD~1
    # Restaura o HEAD a um commit atrás. As alterações permanecem no diretório de trabalho (unstaged).
    
  3. Cancelar completamente o commit local, incluindo a eliminação de alterações do diretório de trabalho e do índice (reset duro):

    git reset --hard HEAD~1
    # Restaura o HEAD a um commit atrás e cancela todas as alterações locais. Cuidado! Perda de dados.
    
  4. Cancelar um commit que já foi enviado ao repositório remoto, criando um novo commit que desfaz as alterações do anterior:

    git revert HEAD
    # Cria um novo commit que inverte as alterações do último commit. Seguro para ramos públicos.
    

A escolha do método depende da situação. Para ramos públicos, recomenda-se usar git revert, pois não altera o histórico de commits. Para alterações locais ou ramos em que trabalha sozinho, pode usar git reset.