Introduzione

Quando si lavora con Git, è possibile che si verifichi una situazione in cui è necessario modificare un messaggio di commit. Esistono diversi motivi per cui si desidera apportare la modifica, ad esempio correggere un errore di battitura, rimuovere informazioni riservate o aggiungere ulteriori informazioni.

Questa guida spiega come modificare il messaggio degli Git commit  più recenti o più vecchi.

Modificare del commit più recente

Il comando git commit --amend consente di modificare il messaggio di commit più recente.

Commit non pushed

Per modificare il messaggio del commit più recente che non è stato inviato al repository remoto, eseguirne nuovamente il commit utilizzando il flag --amend.

Passare alla directory del repository nel proprio terminale.

Eseguire il comando seguente per modificare (cambiare) il messaggio dell'ultimo commit:

git commit --amend -m "New commit message."

Ciò che il comando fa è sovrascrivere il commit più recente con quello nuovo.

L'opzione -m consente di scrivere il nuovo messaggio sulla riga di comando senza aprire una sessione dell'editor.

Prima di modificare il messaggio di commit puoi anche aggiungere altre modifiche che hai dimenticato in precedenza:

git add .
git commit --amend -m "New commit message."

Commit pushed

Il commit modificato (modificato) è una nuova entità con un diverso SHA-1. Il commit precedente non esisterà più nel ramo corrente.

In generale, è necessario evitare di modificare un commit già inviato in quanto potrebbe causare problemi alle persone che hanno basato il proprio lavoro su questo commit. È una buona idea consultare i tuoi colleghi sviluppatori prima di modificare un commit push.

Se hai modificato il messaggio di commit push più recente, dovresti forzarlo.

Passare al repository.

Modifica il messaggio dell'ultimo commit push:

git commit --amend -m "New commit message."

Forza push per aggiornare la cronologia del repository remoto:

git push --force branch-name

Modificare un commit più vecchio o multiplo

Se è necessario modificare il messaggio di un commit più vecchio o multiplo, è possibile utilizzare un interattivo git rebase per modificare uno o più commit precedenti.

Il comando rebase riscrive la cronologia dei commit ed è fortemente sconsigliato di reimpostare i commit che sono già stati inviati al repository Git remoto.

Passare al repository contenente il messaggio di commit che si desidera modificare.

Digitare git rebase -i HEAD~N, dove N è il numero di commit su cui eseguire un rebase. Ad esempio, se si desidera modificare il 4° e il 5° ultimo commit, digitare:

git rebase -i HEAD~5

Il comando visualizzerà gli ultimi X commit nell'editor di testo predefinito:

pick 43f8707f9 fix: update dependency json5 to ^2.1.1
pick cea1fb88a fix: update dependency verdaccio to ^4.3.3
pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2
pick c5e078656 chore: update dependency flow-bin to ^0.109.0
pick 11ce0ab34 fix: Fix spelling.

# Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)

Passa alle righe del messaggio di commit che desideri modificare e sostituisci pick con reword:

reword 43f8707f9 fix: update dependency json5 to ^2.1.1
reword cea1fb88a fix: update dependency verdaccio to ^4.3.3
pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2
pick c5e078656 chore: update dependency flow-bin to ^0.109.0
pick 11ce0ab34 fix: Fix spelling.

# Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)

Salva le modifiche e chiudi l'editor.

Per ogni commit scelto, si aprirà una nuova finestra dell'editor di testo. Modifica il messaggio di commit, salva il file e chiudi l'editor.

fix: update dependency json5 to ^2.1.1

Forza il push delle modifiche al repository remoto:

git push --force branch-name

Conclusione

Per modificare il messaggio di commit più recente, utilizzare il comando commit --amend e per modificare un messaggio di commit più vecchio o multiplo usare il comando git rebase -i HEAD~N.

Non modificare i commit sospesi in quanto potrebbe potenzialmente causare molti problemi ai tuoi colleghi.