Modulo 02 — Introduzione a Git
Cos’è un Version Control System
Section titled “Cos’è un Version Control System”Il controllo di versione è un software che traccia e gestisce le modifiche ai file nel tempo. In pratica permette di:
- tornare a versioni precedenti dei file;
- confrontare le modifiche tra versioni;
- annullare cambiamenti;
- collaborare e combinare il lavoro di più persone.
Git è uno di questi sistemi (altri noti: Subversion, CVS, Mercurial), ma è quello dominante: nei sondaggi Stack Overflow viene indicato da circa il 90% degli sviluppatori, al punto che le survey recenti smettono nemmeno di chiedere.
Le due architetture: centralizzato vs distribuito
Section titled “Le due architetture: centralizzato vs distribuito”I VCS più vecchi (Subversion, CVS) seguono il modello centralizzato: un unico server conserva la history “ufficiale”; chi lavora prende in prestito i file dal server e li riconsegna. Se il server muore, resta solo ciò che ognuno ha nel proprio checkout.
VCS centralizzato: un solo server contiene la history, i client hanno solo copie dei file.
Git invece è distribuito: ogni clone contiene la history completa del progetto. Il repository remoto (es. su GitHub) è solo un punto di scambio — se sparisce, chiunque possieda un clone può ricostruire tutto.
VCS distribuito come Git: ogni client è un mirror completo della history.
Snapshot, non differenze
Section titled “Snapshot, non differenze”Un’altra particolarità che distingue Git: molti sistemi salvano i file come differenze progressive rispetto alla versione base; Git invece memorizza, a ogni commit, uno snapshot completo del progetto (riutilizzando i riferimenti ai file invariati). Lo approfondiamo nel modulo 04 e nel modulo 18.
Approccio a differenze (sinistra) vs approccio a snapshot di Git (destra).
Cosa fa Git per noi
Section titled “Cosa fa Git per noi”- Traccia le modifiche su più file contemporaneamente.
- Permette di confrontare versioni di un progetto.
- Fa “viaggiare nel tempo”: si torna a versioni vecchie e si riparte da lì.
- Permette di annullare modifiche recenti.
- Facilita collaborazione e condivisione delle modifiche, e la loro fusione.
L’analogia dei checkpoint
Section titled “L’analogia dei checkpoint”Il modo più semplice per capire Git: è come il salvataggio in un videogioco. Prima di affrontare una parte difficile, salvi; se muori, riparti dal salvataggio invece che dall’inizio.
Sul progetto si procede allo stesso modo: si crea un “checkpoint” (commit) dopo ogni passo significativo (inizializzazione, aggiunta della navbar, prima riga di contenuti, tema scuro…). Se un collega critica i colori, si torna indietro al checkpoint giusto; se il percorso alternativo merita, si può continuarlo come timeline separata (branch) e in seguito combinare due linee di lavoro.
Un po’ di storia
Section titled “Un po’ di storia”Linus Torvalds — l’autore di Linux — nel 2005 era frustrato dai VCS esistenti (lenti, closed-source, a pagamento). Il 3 aprile 2005 inizia a scrivere il proprio VCS: in pochi giorni la funzionalità base era pronta, il primo rilascio ufficiale arrivò dopo qualche mese. Il nome “Git” ha letture ironiche (già lui lo definì “un stupido tracker di contenuti”): tra le interpretazioni ufficiali, “global information tracker” quando funziona, e una frase meno elegante quando si rompe.
Chi lo usa
Section titled “Chi lo usa”- Sviluppatori (da big tech a startup): praticamente obbligatorio.
- Ruoli tech-adjacent: designer e altri spesso collaborano tramite Git.
- Governo: es. il consiglio comunale di Washington DC pubblica le leggi su Git/GitHub, con cittadini che contribuiscono correggendo errori.
- Scienziati: gestione di codice e dataset, utile nel mondo peer-review.
- Scrittori: bozze di romanzi/sceneggiature, libri a più autori.
- Chiunque: diari, tesi, file Photoshop, persino composizioni musicali.
Git vs GitHub — la distinzione chiave
Section titled “Git vs GitHub — la distinzione chiave”| | Git | GitHub | | --- | --- | | Che cos’è | Software di version control | Servizio di hosting per repo Git | | Dove gira | In locale, sulla tua macchina | Nel cloud | | Serve un account? | No | Sì | | Serve internet? | No | Sì | | Dipendenza | Si usa benissimo senza GitHub | Esistono alternative (GitLab, Bitbucket, …) |
La history che hai in locale si può caricare su GitHub per condividerla: GitHub è il posto dove il lavoro fatto con Git viene condiviso e collaborativo.
Immagini: documentazione ufficiale di Git (git-scm.com, dal libro Pro Git di Scott Chacon), licenza CC BY-NC-SA 3.0.