Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git commit [-m <msg>] [-a] [--amend] [--no-verify] [-S]

Descrizione

Il comando git commit prende tutto ciò che è attualmente nella staging area e crea un nuovo oggetto commit nel repository. Un commit è uno snapshot immutabile contenente un tree (i contenuti dei file), uno o più puntatori parent, metadati di author e committer e un messaggio. I commit sono l'unità di storia in Git: i branch sono puntatori a commit, i merge producono commit con più parent, e i tag etichettano commit specifici.

Un buon messaggio di commit ha una riga oggetto breve (sotto i 50 caratteri), una riga vuota e un corpo opzionale che spiega il perché. Molti team usano conventional commit o altri sistemi di prefisso. L'opzione --amend modifica il commit più recente, utile per correggere typo nel messaggio o aver dimenticato di mettere in stage un file — ma non fare mai amend di un commit che è già stato pushato e condiviso.

Nell'uso quotidiano, git commit si integra con alias della shell, plugin dell'editor e CI. Gli utenti esperti aggiungono alias e wrapper che applicano convenzioni del team. Per il debug, ri-esegui con GIT_TRACE=1 per vedere le chiamate plumbing sottostanti. git commit --help apre la man page completa.

Capire come git commit interagisce con il modello dati di Git aiuta a prevedere i risultati. La maggior parte dei problemi deriva da: comportamento predefinito sorprendente, operazioni di rete parziali o riscrittura di storia condivisa.

Opzioni comuni

OpzioneDescrizione
-m <msg>Usa il messaggio dato invece di aprire un editor.
-a, --allMette automaticamente in stage modifiche e cancellazioni di file tracciati prima di committare.
--amendSostituisce il commit più recente con uno nuovo.
--no-verifySalta gli hook pre-commit e commit-msg.
-S, --gpg-signFirma con GPG il commit.
--allow-emptyPermette un commit senza modifiche.
--fixup=<commit>Crea un commit fixup da usare con autosquash rebase.
-v, --verboseMostra il diff nell'editor del messaggio di commit.

Esempi

git commit -m "Fix off-by-one error in pagination"
# Commit veloce con un messaggio di una riga

git commit -am "Update README"
# Mette in stage modifiche tracciate e committa in un passo

git commit --amend -m "Better message"
# Riscrive il messaggio del commit più recente

git commit --fixup=abc123
# Crea un commit fixup da squashare durante il rebase

Errori comuni

Fare amend di un commit pubblicato e poi force-pushare riscrive la storia su cui altri possono aver basato lavoro, causando confusione. Fai amend solo di commit locali non condivisi. Un altro errore è committare con -a quando anche file untracked dovrebbero essere inclusi — -a ignora i nuovi file. Infine, non usare mai --no-verify solo per bypassare test che falliscono; correggi il test o il codice.

Comandi correlati

git add, git status, git log, git revert