Vai al contenuto principale

Git Amend spiegato: guida passo passo con esempi

Questa guida completa ti insegna a usare git commit --amend per correggere errori, aggiungere modifiche dimenticate e gestire la cronologia Git.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Fare un commit e poi accorgersi di un refuso o di un file mancante è una frustrazione comune. È qui che git commit --amend brilla.

Ti permette di ritoccare l’ultimo commit, sia per correggere un messaggio sia per aggiungere modifiche, senza appesantire la cronologia. È essenziale per un log Git pulito e professionale, soprattutto nei progetti di team dove la chiarezza favorisce la collaborazione. 

In questa guida ti accompagnerò attraverso le basi di Git amend, gli usi avanzati, i rischi e le best practice per affinare il tuo workflow.

> Per partire con Git con il piede giusto, dai un’occhiata al corso Introduction to Git.

Modificare il commit più recente

Questa sezione spiega come aggiornare l’ultimo commit con git commit --amend. Il comando è utile per correggere i messaggi di commit e aggiungere modifiche mancate, aiutandoti a mantenere una cronologia Git pulita e professionale.

Correggere i messaggi di commit

Messaggi di commit accurati sono fondamentali per una documentazione chiara. Un refuso o una nota vaga può fuorviare i collaboratori.

Per rivedere il messaggio del commit più recente, esegui:

git commit --amend

Il comando apre l’editor, consentendoti di modificare il messaggio. Dopo le modifiche, salva e chiudi per aggiornare il commit, mantenendo la cronologia ordinata e descrittiva.

Spiegazione: Il comando sostituisce il messaggio dell’ultimo commit con la versione rivista, evitando commit extra per semplici correzioni.

Integrare modifiche mancate

È comune rendersi conto di aver dimenticato un file o una modifica dopo il commit. Invece di creare un secondo commit solo per la correzione, git commit --amend può far confluire tutto nel commit originale.

Passaggi:

  • Aggiorna o aggiungi i file mancanti.
  • Metti in stage gli aggiornamenti con:
git add <file-name>
  • Modifica il commit precedente senza cambiare il messaggio:
git commit --amend --no-edit

Spiegazione: Il flag --no-edit mantiene il messaggio originale, aggiornando solo il contenuto. Il risultato è una cronologia più pulita e consolidata.

Diagram of amending a Git commit to update files and message.

Un diagramma che mostra come git amend trasforma il commit originale.

> Per approfondire le basi di Git, il corso Foundations of Git è un ottimo prossimo passo.

Tecniche avanzate di amend

Questa sezione approfondisce gli usi più sofisticati di git amend e degli strumenti correlati. Ideali per workflow complessi.

Rebase interattivo per commit storici

Il comando git commit --amend è utile quando devi correggere solo l’ultimo commit. 

Ma se l’errore è sepolto due o tre commit indietro? Entra in gioco il rebase interattivo. Ti consente di modificare, riordinare, squashare o eliminare commit più vecchi—riscrivendo la storia con precisione.

Poniamo che tu voglia modificare uno degli ultimi tre commit. Avvia un rebase interattivo:

git rebase -i HEAD~3

Si aprirà un editor di testo con elencati gli ultimi tre commit, ciascuno preceduto dalla parola pick, in questo modo:

pick a1b2c3 Commit message 1
pick d4e5f6 Commit message 2
pick 789abc Commit message 3
  • Cambia pick in edit accanto al commit che vuoi rivedere.
  • Salva e chiudi l’editor.

Git si fermerà al commit selezionato e ti inviterà ad apportare modifiche.

Ora effettua le modifiche necessarie:

  • Modifica i file secondo necessità.
  • Metti in stage le modifiche:
git add .
  • Esegui l’amend del commit:
git commit --amend
  • Aggiorna il messaggio di commit se necessario, poi salva e chiudi l’editor. 
  • Una volta completate le modifiche, indica a Git di continuare:
git rebase --continue

Git applicherà gli eventuali commit rimanenti sopra a quello aggiornato. Se ci sono conflitti, risolvili prima di eseguire nuovamente git rebase --continue.

Spiegazione: I comandi sopra riscrivono la storia degli ultimi tre commit, permettendoti di rifinire voci più vecchie.

Nota: Il rebase interattivo riscrive gli hash dei commit. Se il branch è stato condiviso con altri (ad esempio pushato su un remoto), riscriverne la storia può creare problemi ai collaboratori. Usalo solo su branch locali o privati, oppure coordina con il team prima di effettuare un force push (git push --force).

Commit fixup nelle pipeline CI/CD

Nelle pipeline CI/CD, una cronologia Git pulita e concisa non è solo estetica—supporta log più chiari, debug più semplice e automazioni più prevedibili. 

Quando effettui correzioni minori (ad esempio, un refuso, un aggiornamento di configurazione o un ritocco a un test), puoi usare i commit fixup invece di creare commit autonomi e rumorosi.

Per preparare un commit che verrà unito automaticamente a uno precedente durante il rebase, esegui:

git commit --fixup <commit-hash>

Questo crea un commit speciale etichettato come fixup per il commit specificato, segnalando che dovrebbe essere combinato durante un rebase interattivo.

Suggerimento: Usa git log o git rebase -i per trovare il <commit-hash> di destinazione se necessario.

Per unire in modo pulito il commit fixup all’originale durante un rebase, usa il flag --autosquash:

git rebase -i --autosquash HEAD~5

Si aprirà l’editor del rebase, dove Git riordinerà e etichetterà automaticamente i commit fixup per lo squashing.

  • Non serve cambiare manualmente pick in fixup—Git lo fa per te.
  • Conferma il piano di rebase e salva il file.

Spiegazione: Usare commit fixup con --autosquash ti permette di raggruppare le modifiche minori nel commit storico corretto, invece di riempire la cronologia di micro-commit. Il risultato è un log lineare e pulito, che:

  • Semplifica audit e debug in ambienti CI/CD
  • Riduce il rumore in pull request e log di merge
  • Aiuta a prevenire problemi di build o test legati a commit incompleti o fuorvianti

> Per andare oltre le basi, il nostro corso Intermediate Git approfondisce comandi avanzati come amend e rebase.

Implicazioni meccaniche dell’amend

Modificare i commit cambia la tua cronologia Git. Questa sezione esplora gli effetti tecnici dell’amend. Capirli garantisce un uso sicuro.

Invalidazione degli hash e immutabilità

Ogni commit Git ha un hash univoco SHA-1 (o SHA-256 nelle versioni più recenti), calcolato dal suo contenuto, metadati e commit padre. L’amend crea un nuovo hash, rompendo l’immutabilità se condiviso.

Se il commit originale è già stato pushato su un remoto condiviso, questo crea una discrepanza tra i branch locali e remoti.

Per pushare la cronologia aggiornata, dovrai forzare l’aggiornamento:

git push --force

Nota: Come detto, --force può sovrascrivere il lavoro dei collaboratori e creare confusione. È più sicuro fare amend prima del push, o usare force push solo su branch privati e con la dovuta coordinazione.

Reflog e recupero dei dati

Anche se i commit modificati vengono sovrascritti, Git non li elimina immediatamente. Mantiene infatti un reflog, che traccia gli aggiornamenti ai riferimenti dei branch (come HEAD o origin/main), inclusi i commit modificati o eliminati.

Puoi visualizzarlo con:

git reflog

Elencherà le modifiche recenti con i relativi hash di commit.

Per recuperare un commit perso:

 git checkout <old-commit-hash>

Da lì puoi creare un branch, cherry-pickare modifiche o ispezionare il lavoro perso.

Spiegazione: Il reflog funge da rete di sicurezza, permettendoti di recuperare commit che sembrano “persi” dopo un amend o un rebase. È utile quando un force push o una riscrittura della storia va storta.

Considerazioni sul lavoro collaborativo

Sebbene git commit --amend sia uno strumento potente per ripulire la cronologia, in ambienti collaborativi va usato con cautela. 

Riscrivere la storia pubblica può introdurre confusione, errori o persino perdita di dati se non coordinato correttamente.

Rischi nel modificare commit pubblici

Lo ripeto: una volta che un commit è stato pushato su un repository remoto condiviso, modificarlo cambia hash e storia. Questo porta a errori “non-fast-forward” quando altri provano a fare pull o push, poiché la loro cronologia locale non corrisponde più al remoto.

Se devi assolutamente modificare un commit pubblico:

  • Avvisa il team per evitare conflitti.
  • Usa git push --force-with-lease per aggiornamenti più sicuri.

Questo comando assicura che sovrascrivi il branch remoto solo se non è cambiato dall’ultimo fetch, riducendo il rischio di cancellare il lavoro altrui.

Best practice: evita di modificare commit condivisi se non strettamente necessario. Preferisci creare un nuovo commit o usare revert per preservare la stabilità del team.

Policy di protezione dei branch

Molti team applicano regole di protezione dei branch—soprattutto su main, master o branch di release—per impedire force push e modifiche dirette. Questo può bloccare qualsiasi force push legato a un amend dopo che il commit è stato pushato.

Per aggirare in sicurezza:

  • Esegui gli amend prima del push.
  • Lavora su feature branch non protetti. 
  • Se serve una correzione in un branch protetto:
    • Crea invece un nuovo commit.
    • Oppure richiedi un’eccezione agli admin del repository con la dovuta motivazione.

> Se collabori tramite GitHub, il percorso GitHub Foundations ti aiuta a consolidare le competenze di workflow su GitHub.

Strumenti e interfacce di supporto

L’amend dei commit non deve per forza limitarsi alla riga di comando. 

Molti strumenti Git offrono interfacce user-friendly che rendono il processo più accessibile, soprattutto ai principianti. Scegliere l’interfaccia giusta può aumentare sia la fiducia sia la produttività.

Client GUI

Gli strumenti GUI rendono git amend accessibile con elementi visivi:

  • Sourcetree: Include una casella “Amend” nel pannello dei commit; è possibile visualizzare e modificare le modifiche in stage prima di confermare.
  • GitKraken: Consente il riordinamento drag-and-drop e la modifica interattiva dei commit, incluso il supporto per amend.
  • GitHub Desktop: Permette di modificare l’ultimo commit direttamente dalla vista della cronologia con un semplice toggle.

Questi strumenti offrono feedback visivo in tempo reale, riducono il rischio di errori accidentali e sono particolarmente utili per chi sta imparando Git.

Benchmark di workflow CLI vs GUI

La CLI (git commit --amend) è rapida ma più soggetta a errori per chi inizia. Le GUI offrono sicurezza con indicatori visivi, ma possono rallentare gli utenti avanzati. 

Le GUI possono sicuramente facilitare l’apprendimento ai neofiti; io ho iniziato con Sourcetree per capire i flussi di amend prima di passare alla CLI per velocità e controllo.

Ecco un confronto visivo del supporto all’amend nei principali strumenti Git:

Git GUI tools comparison for amend options.

Grafico di confronto delle funzionalità di amend nei tool GUI.

Best practice e raccomandazioni

Per concludere, ecco i principi chiave per usare git commit --amend in modo efficace e sicuro nei workflow reali:

Amend solo in locale

Modifica solo commit locali per evitare problemi sul remoto. Verifica con git log e definisci regole di team nella documentazione del progetto per coerenza.

Commit atomici e protocolli di team

Crea commit piccoli e atomici per cambiamenti mirati. Allineati con il team sulla dimensione dei commit e rivedi prima del push per intercettare errori.

Backup automatici e formazione

Usa backup (ad es. hook Git, snapshot CI) prima di fare amend e promuovi la familiarità con strumenti come git reflog per recuperare rapidamente dagli errori.

Conclusione

git commit --amend è un comando potente che ti permette di rifinire la cronologia dei commit, correggere errori e presentare il tuo lavoro con chiarezza. Se usato con criterio—soprattutto su commit locali—aiuta a mantenere un log Git pulito e professionale, senza disordine né ambiguità.

Per continuare a migliorare con Git, esplora il corso Intermediate Git o scarica la Complete Git Cheat Sheet come riferimento rapido.

Buon coding, e tieni la tua cronologia affilata!

FAQ

Git amend mantiene le informazioni sull’autore del commit originale?

Sì, per impostazione predefinita mantiene autore e timestamp. Per cambiare autore, usa git commit --amend --author="Name <email>" per gli aggiornamenti.

Posso modificare un commit senza cambiare il suo timestamp?

Assolutamente. Usa git commit --amend --date=<original-date> per preservare il timestamp originale, utile per registri storici accurati.

Cosa succede se git amend fallisce perché non ci sono modifiche in stage?

Se non c’è nulla in stage, git amend fallisce a meno che tu non usi git commit --amend --allow-empty, spesso per modifiche al solo messaggio.

Come influisce git amend sugli hook di commit?

L’amend riesegue gli hook di commit, come gli script pre-commit. Assicurati che gli hook non blocchino l’amend se impongono regole rigide.

Posso recuperare un commit modificato senza accesso al reflog?

È difficile. Senza reflog, ti servirebbe un branch di backup o l’hash originale. Controlla sempre i backup o il reflog per evitare perdite.

Git amend cambia l’hash del commit?

Sì. Poiché i commit Git sono identificati da contenuto e metadati, qualsiasi cambiamento—compreso l’amend—genera un nuovo hash di commit.

Posso modificare un commit già pushato?

Tecnicamente sì, ma richiede un force push (git push --force). Questo può creare disagi ai collaboratori, quindi è consigliato solo su branch privati o locali.

In cosa differisce git amend da git rebase?

git amend influisce solo sull’ultimo commit, mentre git rebase permette di riscrivere la storia su più commit, risultando più potente ma anche più rischioso.

Cosa succede se uso --no-edit durante l’amend?

Il flag --no-edit mantiene invariato il messaggio del commit precedente aggiornando solo il contenuto. È ideale quando ti è solo sfuggito un file o un refuso.

Posso annullare un amend se sbaglio?

Sì. Il reflog di Git traccia i riferimenti ai commit precedenti. Usa git reflog per trovare il vecchio hash e recuperarlo con git checkout <hash>.

Come faccio a sapere se l’amend è riuscito?

Esegui git log o git reflog per vedere la cronologia dei commit. Se l’amend è andato a buon fine, vedrai il commit aggiornato come voce più recente.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Sono un data engineer e community builder: lavoro su pipeline dati, cloud e strumenti di AI, e scrivo tutorial pratici e ad alto impatto per DataCamp e per sviluppatori alle prime armi.

Argomenti
Git

Scopri di più su Git con questi corsi!

Corso

Introduzione a Git

2 ore
101.6K
Scopri le basi di Git per gestire le versioni nei tuoi progetti software e dati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro