Fare commit — cos'è, regole di formattazione e lavoro con Git

Autore: IT Sectr Pubblicato: 2026-07-31 Tempo di lettura: 6 min

Fare commit è l'azione di salvare le modifiche nel sistema di controllo versione Git, creando un punto di salvataggio nella cronologia del progetto. Ogni commit include un hash, un autore, una data e una descrizione delle modifiche. Secondo GitHub Octoverse 2024, ogni giorno vengono creati oltre 50 milioni di commit in tutto il mondo. Commit è l'unità di base del lavoro con il versionamento, senza la quale lo sviluppo software moderno è impossibile.

Punti chiave

  • Fare commit — salvare le modifiche in Git con una descrizione delle modifiche apportate
  • Ogni commit ha un hash univoco, autore, data e messaggio
  • Atomicità — ogni commit contiene una modifica logica
  • Il messaggio di commit dovrebbe rispondere alla domanda sul perché la modifica è stata fatta
  • I commit possono essere integrati, annullati e combinati tramite git amend e rebase

Cos'è un commit in Git

Un commit in Git è un oggetto che memorizza lo stato dei file di progetto in un determinato momento. Ogni commit contiene un'istantanea di tutti i file tracciati, un riferimento al commit padre e metadati. A differenza di altri sistemi di controllo versione, Git utilizza content-addressable storage — ogni oggetto è identificato da un hash SHA-1 del suo contenuto.

Quando uno sviluppatore fa commit delle modifiche, Git crea un oggetto commit che memorizza: un oggetto tree (struttura dei file), hash del commit padre, autore, committer, data e messaggio. Questo oggetto è immutabile — una volta creato, un commit non può essere modificato senza cambiare il suo hash. Questa immutabilità garantisce l'integrità della cronologia del progetto.

bash
# Preparare le modifiche e fare commit
git add index.html style.css
git commit -m "Fix responsive layout on mobile devices"

# Visualizzare i dettagli del commit
git log --oneline -3
git show HEAD

# Preparare tutte le modifiche e fare commit in un unico passaggio
git commit -a -m "Update dependencies to latest versions"

I commit formano un grafo aciclico diretto (DAG), dove ogni nuovo commit fa riferimento al precedente. Ciò consente di navigare nella cronologia, annullare le modifiche e analizzare l'evoluzione del codebase. Comprendere la struttura del DAG di Git è la base per il lavoro avanzato con i commit.

Come fare commit delle modifiche correttamente

Il processo di commit in Git consiste in due fasi: aggiungere le modifiche all'area di staging (indice) e creare il commit. L'area di staging consente allo sviluppatore di selezionare quali modifiche specifiche includere nel commit, anche se molti file sono stati modificati nella directory di lavoro.

La regola dell'atomicità è il principio chiave di un buon commit. Ogni commit dovrebbe contenere una modifica logica. Se uno sviluppatore corregge un bug e refactoring del codice — questi dovrebbero essere due commit separati. I commit atomici semplificano la revisione del codice, il rollback delle modifiche e l'analisi della cronologia.

Prima di fare commit, vale la pena verificare: se nel codice sono rimasti output di debug, blocchi commentati o modifiche accidentali. Per questo si usa il comando git diff --cached, che mostra esattamente cosa sarà incluso nel commit. Un controllo aggiuntivo con git status visualizza l'elenco dei file nell'area di staging.

  • Controlla le modifiche — git diff --cached mostra cosa sarà incluso nel commit
  • Controlla la qualità — il codice deve superare il linter e i test prima del commit
  • Scrivi un messaggio — una descrizione chiara dello scopo della modifica
  • Verifica i file in staging — git status conferma l'elenco dei file

Regole per scrivere i messaggi di commit

Il messaggio di commit è la documentazione della modifica per gli sviluppatori futuri. Un buon messaggio risponde alle domande: cosa è stato modificato e perché. La convenzione Conventional Commits (team Angular, 2016) è diventata uno standard per molti progetti e definisce il formato: tipo(ambito): descrizione.

TipoScopoEsempio
featnuova funzionalitàfeat(api): add user registration endpoint
fixcorrezione di bugfix(auth): resolve token refresh issue
refactorrefactoring senza modifica del comportamentorefactor(core): extract payment validator
docsdocumentazionedocs(readme): update installation guide
testaggiunta di testtest(cart): add unit tests for checkout

Un buon messaggio di commit consiste in un'intestazione (fino a 50 caratteri) e un corpo (opzionale, fino a 72 caratteri per riga). L'intestazione è scritta all'imperativo: “Add” non “Added” o “Adds”. Capitalization e punto alla fine dell'intestazione non vengono usati — è una convenzione internazionale di Git.

Un messaggio scadente: “fix things” o “update” — non fornisce informazioni. Tra un mese, uno sviluppatore non sarà in grado di capire cosa è stato esattamente modificato e perché. Un buon messaggio: “fix(payment): handle timeout in stripe callback” — è immediatamente chiaro cosa e dove è stato corretto.

Errori comuni quando si fa commit

Gli sviluppatori, specialmente i principianti, commettono spesso errori tipici quando fanno commit. Il più comune è un commit troppo grande, che mescola decine di modifiche. Tale commit non può essere parzialmente annullato e la revisione del codice diventa un supplizio.

Il secondo errore più frequente è un messaggio di commit scadente. Messaggi come “fix”, “update”, “changes” o “wip” non forniscono contesto agli sviluppatori futuri. Tra sei mesi, nessuno ricorderà cosa è stato esattamente corretto. La regola è semplice: immagina che tra un anno stai guardando la cronologia cercando di trovare una modifica specifica.

Il terzo errore è fare commit di codice non compilato o non funzionante. Dopo un commit, il codice deve almeno compilare. Non rompere la build è un requisito di base per qualsiasi commit in un ramo condiviso. Per questo, la build e i test vengono eseguiti prima del commit.

Il quarto errore è fare commit di dati riservati. Chiavi API, password e token non dovrebbero finire nella cronologia Git. Se un segreto è già stato commitato, non basta rimuoverlo in un nuovo commit, ma deve essere eliminato dall'intera cronologia tramite git filter-branch o BFG Repo-Cleaner.

Tecniche avanzate di lavoro con i commit

Git fornisce strumenti per gestire la cronologia dei commit. Uno dei più utili è git commit --amend, che permette di integrare l'ultimo commit con nuove modifiche o correggere il messaggio. È comodo se lo sviluppatore ha dimenticato di includere un file o ha fatto un errore di battitura nel messaggio.

bash
# Correggere l'ultimo messaggio di commit
git commit --amend -m "fix(auth): correct token validation logic"

# Aggiungere file dimenticato all'ultimo commit
git add missed-file.txt
git commit --amend --no-edit

# Rebase interattivo per gli ultimi 3 commit
git rebase -i HEAD~3

Il rebase interattivo è un potente strumento per riscrivere la cronologia. Permette di combinare commit (squash), cambiare messaggi (reword), riordinare (reorder) ed eliminare commit (drop). Tuttavia, rebase modifica la cronologia, quindi viene usato solo su commit locali che non sono ancora stati inviati a un repository remoto.

Esistono due approcci per annullare i commit. git revert crea un nuovo commit che annulla le modifiche del precedente — un metodo sicuro che preserva la cronologia. git reset rimuove commit dalla cronologia — pericoloso se i commit sono già stati inviati. Nello sviluppo di team, solo git revert viene usato per annullare i commit pubblicati.

Domande frequenti

Cosa significa fare commit in Git?

Fare commit significa creare un punto di salvataggio per le modifiche in Git. Il commit registra lo stato attuale dei file nella cronologia del progetto con una descrizione di ciò che è stato modificato e perché. Ogni commit ha un identificatore univoco (hash SHA-1) e fa parte di una catena ininterrotta di modifiche.

Con quale frequenza dovrei fare commit in Git?

Si consiglia di fare commit dopo ogni modifica logicamente completata, anche piccola. La frequenza ottimale è 1 commit per attività o correzione. Non dovresti fare commit ogni 5 minuti, ma non dovresti nemmeno accumulare modifiche per diversi giorni senza un singolo commit.

Cos'è un commit atomico?

Un commit atomico contiene una modifica logica — un'attività, una correzione di bug o una nuova funzionalità. Non mescola modifiche diverse in un unico commit. I vantaggi dei commit atomici sono: semplicità di rollback, cronologia chiara e revisione del codice facile.

Come annullare un commit in Git?

Per annullare un commit pubblicato, usa git revert <commit-hash> — crea un nuovo commit che annulla le modifiche. Per i commit locali, puoi usare git reset HEAD~1, ma solo se il commit non è stato ancora inviato. git revert è il metodo sicuro per il lavoro di squadra.

Si può modificare un commit già creato?

Sì, prima di inviarlo a un repository remoto. Usa git commit --amend per modificare l'ultimo commit o git rebase -i per modificare più commit. Dopo l'invio, non è consigliato modificare la cronologia — potrebbe causare problemi ad altri sviluppatori se hanno già inviato le loro modifiche.

Riepilogo

  • Fare commit — salvare le modifiche in Git con descrizione delle modifiche
  • Atomicità — un commit = una modifica logica
  • Messaggio — usa Conventional Commits: tipo(ambito): descrizione
  • Verifica — il codice deve compilare e superare i test prima del commit
  • Sicurezza — non committare segreti, usa .gitignore
  • Modifica — amend per l'ultimo commit, rebase -i per più commit
  • Annullamento — git revert per i pubblicati, git reset per i locali

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche