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
.