Come annullare i commit locali più recenti in Git

Se per sbaglio avete effettuato un commit su dei file sbagliati e volete annullare l’ultimo commit, questa è la procedura da utilizzare:


$ git reset HEAD~
[ correggere gli errori nei file ]
$ git add .
$ git commit -c ORIG_HEAD
       
       

git reset HEAD~ è il comando effettivamente responsabile dell’annullamento. Verrà annullato il vostro ultimo commit lasciando inalterato l’albero di lavoro (lo stato dei file su disco). Sarà necessario riaggiungere i file prima di poter effettuare nuovamente il commit.

Effettuate le correzioni che dovete fare

git add per tutti i file che volete includere nel nuovo commit.

Effettuate il commit delle modifiche, riutilizzando il vecchio messaggio di commit. Il comando reset ha copiato la vecchia intestazione (HEAD) in .git/ORIG_HEAD; effettuando il commit con l’opzione -c si aprirà un editor, che inizialmente contiene il messaggio di log del vecchio commit e ti consente di modificarlo. Se non è necessario modificare il messaggio, è possibile utilizzare l'opzione -C.


In alternativa, per modificare il commit precedente (o solo il suo messaggio di commit), commit --amend aggiungerà le modifiche all'interno dell'indice corrente al commit precedente.

Per rimuovere (non ripristinare) un commit che è stato inviato al server, è necessario riscrivere la cronologia con git push origin master --force.