← Tutti gli episodi
Copertina di Il commit: una fotografia con un'etichetta e un genitore
Stagione 14 · Episodio 004

Il commit: una fotografia con un'etichetta e un genitore

26 agosto 2026 5:20
0:00 5:20

Ciao, e benvenuto nella quarta puntata della quattordicesima stagione. Nella scorsa puntata abbiamo scattato la nostra istantanea, salvandola nel deposito. In Git, questa istantanea salvata ha un nome preciso, un nome che sentirai continuamente e che è il mattone fondamentale di tutto: il commit. Oggi guardiamo dentro un commit e capiamo esattamente cos'è. Perché una volta che sai cosa contiene davvero un commit, la storia di Git, i rami, le fusioni, tutto diventerà chiaro. Il commit è l'atomo di Git.

Partiamo dalla cosa più importante, che già conosciamo: un commit contiene un'istantanea, una fotografia completa del progetto in quel momento. Questo è il suo cuore. Ma un commit è di più di una semplice fotografia: è una fotografia arricchita di informazioni preziose, un po' come una vecchia foto con scritto sul retro chi c'è, dove e quando. Vediamo quali informazioni un commit porta con sé oltre all'istantanea, perché ciascuna ha un ruolo.

Prima informazione: chi e quando. Ogni commit registra chi lo ha creato e in quale momento preciso. Come una firma con data in calce a un documento, il commit sa dirti chi ha scattato questa istantanea e quando esattamente. Questo è preziosissimo, soprattutto quando si lavora in gruppo: guardando la storia, puoi sapere chi ha fatto cosa e quando, ricostruire l'evoluzione del progetto, capire a chi chiedere spiegazioni su una certa parte. La paternità e la data sono cucite dentro ogni commit.

Seconda informazione, e voglio soffermarmici perché riprende un tema caro al podcast: il messaggio. Ogni commit porta con sé un messaggio scritto da chi lo ha creato, una breve descrizione di cosa contiene quell'istantanea, di cosa è cambiato e perché. È come la didascalia di una fotografia, che spiega cosa stiamo guardando. Riprendo la prima stagione, e l'importanza di lavorare pensando a chi verrà dopo: un buon messaggio di commit è un regalo al te stesso futuro e ai tuoi colleghi, perché rende la storia del progetto leggibile e comprensibile. Un messaggio scritto male, vago o pigro, rende la storia un mistero indecifrabile. Scrivere buoni messaggi è una delle abitudini più preziose che tu possa coltivare.

Terza informazione, e questa è la più importante di tutta la puntata, quella che cambia tutto: ogni commit sa qual è il commit venuto prima di lui. Ogni commit contiene un riferimento al suo genitore, cioè all'istantanea precedente da cui è nato. È come se ogni foto avesse scritto sul retro qual è la foto scattata subito prima. Questo collegamento all'indietro, dal commit al suo genitore, è ciò che lega tra loro le istantanee, trasformando una collezione sparsa di fotografie in una sequenza ordinata, una storia con un prima e un dopo. Il riferimento al genitore è il filo che cuce insieme la storia.

Fermiamoci su questo punto, perché è fondamentale e prepara la prossima puntata. Ogni commit punta al suo genitore, che a sua volta punta al proprio genitore, e così via, all'indietro, fino al primissimo commit del progetto. Si forma così una catena: ogni istantanea collegata a quella precedente, in una fila che risale tutta la storia. Se parti dall'ultimo commit e segui i riferimenti ai genitori, ripercorri a ritroso l'intera evoluzione del progetto, foto dopo foto, fino all'inizio. Questa catena di commit collegati ai genitori è, letteralmente, la storia del tuo progetto in Git.

C'è un ultimo dettaglio affascinante che voglio darti, perché è geniale e utile: ogni commit ha un nome unico, un'impronta digitale. Git calcola per ogni commit un identificatore unico, una specie di impronta ricavata matematicamente dal suo intero contenuto: l'istantanea, l'autore, la data, il messaggio, il riferimento al genitore, tutto. Questa impronta è come un codice identificativo irripetibile per quel preciso commit. E c'è una conseguenza bellissima: siccome l'impronta è calcolata dal contenuto, se anche una minima cosa nel commit fosse diversa, l'impronta sarebbe completamente diversa. Questo significa che l'impronta garantisce l'integrità: è impossibile alterare di nascosto un commit senza che la sua impronta cambi, tradendo la manomissione. È un sigillo di autenticità.

Voglio farti notare una conseguenza importante di tutto questo, che sfaterà una paura comune: i commit, una volta creati, sono in pratica immutabili. Un commit è quella cosa lì, con quel contenuto, quell'impronta, quel genitore, e resta così. Quando in futuro parleremo di riscrivere la storia, vedrai che in realtà non si modifica mai un commit esistente: se ne creano di nuovi. Questa immutabilità è rassicurante, perché significa che le istantanee salvate sono punti fermi e stabili, testimoni fedeli di com'era il progetto in un dato momento, che non cambiano sotto i tuoi piedi. La storia, in Git, è fatta di pietre solide, non di sabbia.

Per oggi ci fermiamo qui. Il commit è l'atomo di Git: contiene un'istantanea completa del progetto, arricchita da chi lo ha creato e quando, da un messaggio che ne descrive il senso, e soprattutto da un riferimento al commit genitore, quello venuto prima. Questo riferimento al genitore concatena i commit in una catena che risale tutta la storia del progetto. Ogni commit ha inoltre un'impronta unica calcolata dal contenuto, che ne garantisce l'integrità e lo rende di fatto immutabile. Nella prossima puntata vediamo come questa catena diventa, in realtà, un grafo: la storia come rete di commit. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.