Git: introduzione

Git è un software di controllo versione distribuito, gratuito ed open source.  Viene utilizzato largamente nel panorama informatico viste le sue funzionalità che permettono di tenere traccia ai cambiamenti effettuati ai file, fornendo un valido strumento per collaborare su progetti sia di grandi che piccole dimensioni.

Cos’è il controllo versione?

Il controllo versione, in inglese version control, è un sistema che registra i cambiamenti effettuati ad uno o più file nel tempo in modo da poter ripristinare versioni specifiche del file in un secondo momento.

Immagina di essere uno sviluppatore che vuole conservare tutte le versioni di un file o di un intero progetto; attraverso un sistema di controllo versione è molto facile. Esso infatti ti permette di riportare i file selezionati ad uno stato precedente, ripristinare l’intero progetto, vedere chi a modificato per ultimo un file che causa in problema e altro ancora. 

Git è un sistema di controllo versione distribuito, vale a dire che non c’è la necessità di utilizzare un server centralizzato per tenere traccia delle modifiche e delle versioni effettuate al codice sorgente.

Ogni volta che cloni un progetto con Git stai clonando l’intero repository con tutte le versioni precedenti dei file. Questo significa che ogni utente che clona un progetto ha un backup completo del repository principale.

Risulta anche molto veloce perché tutte le operazioni vengono effettuate localmente senza la necessità di comunicare ogni volta con un server centralizzato.

Le caratteristiche di Git

Rispetto ai principali sistemi di controllo versione, che salvano le informazioni come un elenco dei cambiamenti avvenuti sui singoli file, con Git, ogni volta che esegui un commit o salvi lo stato del progetto, viene effettuata una panoramica (snapshot) salvando tutti i file del progetto così come appaiono in quel momento.

Come abbiamo detto quando effettui una clonazione di un progetto Git è come se avessi nel tuo sistema un backup completo.
Tutto il repository, compresi i vecchi snapshot, i commit e tutta la storia correlata vengono scaricati.
Questo rende Git molto veloce: quando per esempio scorri tra la storia del tuo progetto, cercando una modifica di un mese fa, Git non deve comunicare un un server remoto (centralizzato…) ma comunica direttamente con il tuo file system. 

L’integrità è garantita all’interno di Git grazie a operazioni di checksum effettuate su tutti i file presenti nel progetto; il checksum è alla base della filosofia Git. Significa che è impossibile cambiare per sbaglio i contenuti di un file o di una cartella senza che Git se ne accorga.

Il meccanismo che Git usa per il checksum è chiamato SHA-1 hash, è una stringa di 40 caratteri assegnata ad ogni file e calcolata in base al suo contenuto. Ti capiterà spesso di vedere valori simili a “24b9da6552252987aa493b52f8696cd6d3b00373” lavorando con Git visto che vengono usati molto spesso (Git organizza tutto nel database non per nome ma per codice hash).

Su Git difficilmente perderai dei dati. Praticamente, ogni azione che effettui su Git aggiungerà dei dati al database. E’ molto difficile effettuare operazioni irreversibili o che causano la perdita di dati soprattutto se effettui spesso il push del tuo database su un altro repository. Tutto questo rende Git molto utile, puoi sperimentare senza avere la paura di perdere dati dal tuo progetto.

I tre stati di Git

In Git ci sono tre stati principali in cui i tuoi file possono trovarsi: modified, staged e committed.

  • Modified significa che hai modificato il file senza effettuare il commit al tuo database locale
  • Staged significa che hai contrassegnato il file modificato in modo da farlo inserire nel prossimo snapshot (commit)
  • Committed significa che hai effettuato il commit, e i tuoi dati sono al sicuro nel tuo database locale

Solitamente il flusso di lavoro è così composto:

  • Modifichi dei file nella tua working tree (directory dove risiede il checkout del progetto)
  • Decidi di mettere in staging queste modifiche così da essere incluse nella prossima commit
  • Esegui il commit (cioè Git salva un nuovo snapshot con i file da te messi in staging)


git

version control

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *