Sobes.tech
Junior

Come annullare l'ultimo commit nel sistema di controllo versione?

sobes.tech AI

Risposta dell'AI

Ci sono diversi modi per annullare l'ultimo commit, a seconda che sia stato inviato al repository remoto e qual è l'obiettivo dell'annullamento.

  1. Annullare il commit locale senza modificare i file (reset soft):

    git reset --soft HEAD~1
    # Riporta HEAD di un commit indietro, lasciando le modifiche nell'indice (staged).
    
  2. Annullare il commit locale lasciando le modifiche nella directory di lavoro (reset misto - di default):

    git reset HEAD~1
    # Riporta HEAD di un commit indietro. Le modifiche rimangono nella directory di lavoro (unstaged).
    
  3. Annullare completamente il commit locale, inclusa la rimozione delle modifiche dalla directory di lavoro e dall'indice (reset duro):

    git reset --hard HEAD~1
    # Riporta HEAD di un commit indietro e annulla tutte le modifiche locali. Attenzione! Perdita di dati.
    
  4. Annullare un commit già inviato al repository remoto, creando un nuovo commit che annulla le modifiche del precedente:

    git revert HEAD
    # Crea un nuovo commit che inverte le modifiche dell'ultimo commit. Sicuro per i rami pubblici.
    

La scelta del metodo dipende dalla situazione. Per rami pubblici si consiglia di usare git revert, poiché non modifica la storia dei commit. Per modifiche locali o rami su cui lavori da solo, puoi usare git reset.