← Tutti gli episodi
Copertina di L'idea di fondo: istantanee, non differenze
Stagione 14 · Episodio 002

L'idea di fondo: istantanee, non differenze

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

Ciao, e benvenuto nella seconda puntata della quattordicesima stagione. Nella scorsa puntata ho promesso che avremmo costruito insieme il modello di Git, quello che lo rende semplice invece che spaventoso. Oggi posiamo la prima pietra, l'idea più fondamentale di tutte, quella da cui discende ogni altra cosa: il modo in cui Git conserva il tuo lavoro nel tempo. E scopriremo che Git pensa in un modo diverso da come istintivamente ce lo immaginiamo. Git non pensa per differenze: pensa per istantanee.

Partiamo dall'intuizione sbagliata, quella che quasi tutti hanno all'inizio, perché correggerla è metà del lavoro. Istintivamente, immaginiamo che un sistema che tiene traccia delle versioni del nostro lavoro registri le modifiche, i cambiamenti: hai aggiunto questa riga, hai tolto quella parola, hai cambiato quel valore. Immaginiamo cioè che conservi una lista di differenze tra una versione e l'altra, come un elenco di ritocchi. È un'idea ragionevole, ed è persino il modo in cui funzionavano alcuni sistemi più vecchi. Ma non è così che pensa Git, e capire questa differenza è la chiave di tutto.

Ecco come pensa Git, invece, ed è sorprendentemente semplice. Ogni volta che salvi il tuo lavoro in Git, non registri le modifiche fatte: scatti una fotografia completa dell'intero progetto in quel momento. Un'istantanea di come sono tutti i tuoi file, per intero, in quell'istante preciso. È come se, invece di annotare cosa hai cambiato, tu facessi una foto dell'intera scrivania con tutto quello che c'è sopra, così com'è ora. E la volta dopo, un'altra foto completa. E poi un'altra. Git conserva una sequenza di fotografie complete del tuo progetto, non una lista di ritocchi.

Voglio che tu senta bene questa differenza, perché è profonda e non intuitiva. Immagina di scrivere un libro. Il modo delle differenze sarebbe tenere un quaderno in cui annoti ogni singola modifica: a pagina dieci ho cambiato una parola, a pagina venti ho aggiunto un paragrafo. Il modo di Git, invece, è fare una fotocopia dell'intero libro a ogni salvataggio: ecco com'era il libro intero lunedì, ecco com'era intero martedì, ecco com'era intero mercoledì. Git non conserva l'elenco delle tue correzioni: conserva una serie di copie complete del libro in momenti diversi. Ogni salvataggio è una copia intera, un'istantanea di tutto.

Ti starai chiedendo: ma non è uno spreco enorme? Fare una copia completa di tutto il progetto ogni volta non occupa una quantità mostruosa di spazio? È una domanda giusta, e Git ha una risposta astuta che ti tranquillizza. Git è furbo: se un file non è cambiato da un'istantanea alla successiva, non lo ricopia davvero da capo, ma riusa la copia che aveva già, mettendoci solo un riferimento a quella. Quindi, concettualmente, ogni istantanea è completa e contiene tutto il progetto, ma nella pratica Git non spreca spazio duplicando ciò che non è cambiato. Hai il meglio dei due mondi: la semplicità concettuale delle istantanee complete, e l'efficienza pratica di non ricopiare l'immutato.

Perché Git ha scelto questo modo, le istantanee invece delle differenze? Perché porta vantaggi enormi, che vale la pena capire. Primo, la semplicità concettuale: ogni istantanea è uno stato completo e autosufficiente del progetto, facile da capire, non un pezzo che ha senso solo sommato a tutti i ritocchi precedenti. Secondo, la robustezza: siccome ogni istantanea è completa, non dipende da una lunga catena di differenze che, se anche una si corrompesse, rovinerebbe tutto. Terzo, la velocità: ritrovare com'era il progetto in un certo momento significa semplicemente prendere quell'istantanea, non ricostruirla applicando mille modifiche in sequenza. Le istantanee rendono Git solido, veloce e concettualmente pulito.

Questa idea delle istantanee è talmente centrale che voglio darti un modo di pensare che ti guiderà per tutta la stagione. D'ora in poi, quando pensi alla storia di un progetto in Git, non immaginare una lista di modifiche che si accumulano. Immagina una fila di fotografie, una accanto all'altra, ciascuna che mostra l'intero progetto in un momento diverso. La storia del tuo progetto, in Git, è un album di istantanee complete disposte nel tempo. Tieni bene in mente questa immagine dell'album di fotografie, perché è la fondazione su cui costruiremo tutto il resto: i commit, i rami, le fusioni, tutto poggerà su questa idea semplice.

Per oggi ci fermiamo qui. L'idea più fondamentale di Git è che non pensa per differenze, cioè per liste di modifiche, come istintivamente immaginiamo, ma per istantanee: ogni volta che salvi, scatta una fotografia completa dell'intero progetto in quel momento. Per non sprecare spazio, riusa astutamente le copie dei file non cambiati, unendo la semplicità delle istantanee complete all'efficienza pratica. Questo rende Git solido, veloce e pulito. La storia di un progetto è così un album di fotografie complete disposte nel tempo, l'immagine che porteremo con noi. Nella prossima puntata vediamo come si prepara una di queste fotografie: i tre stati. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.