Git Commit --amend
Ultimo aggiornamento
git commit --amend sostituisce il commit più recente con uno nuovo, permettendoti di correggerne il messaggio o di aggiungere file che avevi dimenticato di mettere in staging. Non aggiunge un secondo commit: riscrive l'ultimo. Siccome questo cambia l'hash del commit, fai l'amend solo di commit di cui non hai ancora fatto push.
Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.
Sintassi
| Comando | Cosa fa |
|---|---|
git commit --amend | Modifica l'ultimo commit e il suo messaggio |
git commit --amend -m "new message" | Cambia direttamente il messaggio dell'ultimo commit |
git commit --amend --no-edit | Aggiunge i file in staging, mantiene lo stesso messaggio |
Casi comuni
| Obiettivo | Comando |
|---|---|
| Correggere un refuso nell'ultimo messaggio | git commit --amend -m "fixed message" |
| Aggiungere un file dimenticato all'ultimo commit | git add file poi git commit --amend --no-edit |
| Modificare un commit già inviato (con cautela) | amend, poi git push --force-with-lease |
Domande frequenti su git commit --amend
Come cambio il messaggio del mio ultimo commit?
Esegui
git commit --amend -m "new message" per sostituirlo direttamente, oppure git commit --amend per aprire l'editor e riscriverlo lì. Così riscrivi l'ultimo commit con il nuovo messaggio: non farlo su un commit di cui hai già fatto push, a meno che tu non voglia fare un force push.Come aggiungo un file dimenticato all'ultimo commit?
Metti il file in staging con
git add <file>, poi esegui git commit --amend --no-edit. L'opzione --no-edit mantiene il messaggio del commit esistente e aggiunge semplicemente le nuove modifiche in staging al commit precedente.git commit --amend crea un nuovo commit?
No, sostituisce l'ultimo commit invece di aggiungerne uno. Il risultato sembra un unico commit, ma tecnicamente è un nuovo commit con un nuovo hash che prende il posto del vecchio. Per questo modificare la cronologia condivisa richiede un force push.
È sicuro fare l'amend di un commit già inviato?
Solo con cautela. L'amend riscrive il commit, quindi dopo il push ti servirebbe
git push --force-with-lease, che può creare problemi a chi ha già fatto pull dell'originale. Su un branch condiviso preferisci un nuovo commit o git revert invece dell'amend.Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire
git commit --amend in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche come correggere i commit passo dopo passo.