back to top

Introduzione a Git (ed al controllo di versione distribuito)

In questa guida parleremo di Git, vedremo come usare alcuni dei comandi più utili e cercheremo di capire in che modo funziona questa tecnologia e come fa a tenere traccia dei diversi file di un progetto. Faremo largo uso della shell e dei comandi tipici dei sistemi Unix-like. Prima di iniziare, tuttavia, è opportuno rispondere ad una domanda banale "cos’è Git?".

Immagine introduttiva guida git

Cos’è Git

Git è un VCS (acronimo di Version Control System, in italiano Sistema di Controllo Versione) gratuito e open source che permette di tenere traccia delle modifiche apportate ai file e cartelle di un progetto nel corso del tempo, conservando la storia di tutti i cambiamenti effettuati così che sia sempre possibile accedere alle diverse versioni del progetto stesso. È inoltre possibile ripristinare, in parte o completamente, la struttura della directory base in modo che sia in essa presente una determinata versione dei file e sottocartelle con le modifiche che erano state apportate in un esatto momento del passato.

Una volta installato su un computer, (nella prossima lezione vedremo come eseguire l’installazione per i principali sistemi operativi) possiamo iniziare a tener traccia dei file presenti in una cartella lanciando un semplice comando. Git risulta particolarmente utile quando si lavora con dei file di testo semplice. Infatti, mette a disposizione vari strumenti per confrontare le diverse versioni di un file e vedere esattamente quali modifiche sono state effettuate fra una versione e l’altra. Nonostante siano disponibili numerose applicazioni con interfaccia grafica, Git viene solitamente usato tramite interfaccia a riga di comando. Per questo motivo è indicato soprattutto per lo sviluppo di software, ma potrebbe tranquillamente essere impiegato in altri ambiti. Per esempio, può risultare utile se si sta scrivendo un libro utilizzando un liguaggio come Markdown o Latex.

Abbiamo detto che Git è un software per il controllo di versione. A voler essere più precisi, Git è un DVCS, ovvero un software per il controllo di versione distribuito. Cerchiamo quindi di capire cosa vuol dire.

Git è in grado di tener traccia delle modifiche apportate a un gruppo di file e cartelle. Per far ciò salva le informazioni relative a gruppi di file all’interno di una struttura dati che prende il nome di repository. Grazie ai dati salvati nel repository è possibile ‘navigare indietro nel tempo’ e visualizzare o ripristinare i dati contenuti in uno o più file o la struttura di intere cartelle.

sistema di controllo versione centralizzato

In sistemi distribuiti come Git, al contrario di sistemi centralizzati, ciascun programmatore mantiene un repository locale e ognuno può lavorare e modificare il proprio repository indipendentemente dagli altri, senza dover necessariamente accedere a un repository centrale. Al contrario, in sistemi centralizzati è di solito presente un repository centrale da cui ognuno aggiorna o scarica l’ultima versione di un certo file. In questi casi è solitamente necessario essere collegati sempre al repository centrale.

sistema di controllo versione distribuito

Nel caso di sistemi distribuiti, ogni programmatore può lavorare indipendentemente e più velocemente col proprio repository locale. Anche se è possibile scambiare set di modifiche con gli altri collaboratori, in pratica si sceglie di far riferimento a un repository principale. È importante però sottolineare che tale scelta non è imposta dall’architettura di Git. Definito un repository principale, ogni programmatore provvederà a scaricare da quest’ultimo gli aggiornamenti e ad applicarli alla propria copia locale del repository. Invierà poi le proprie modifiche al repository eseguendo l’operazione ‘push’.

Per ora può sembrare tutto un po’ astratto, ma nei prossimi articoli vedremo come ciò sia possibile in Git e in che modo le diverse modifiche, effettuate da vari collaboratori, vengono unite.

Git non è GitHub

differenza fra git e github

Chi utilizza Git per la prima volta potrebbe far confusione fra Git e GitHub. È bene sottolineare che Git e GitHub sono due cose diverse. Come già detto in precedenza, Git è un DVCS, ovvero un software che registra e mantiene traccia delle modifiche apportate a una serie di file. GitHub è una piattaforma online creata nel nel 2008 da Tom Preston-Werner, Chris Wanstrath e PJ Hyett ed è probabilmente la scelta più popolare per l’hosting dei repository Git. Github fornisce alcune funzionalità utili che aiutano gruppi di persone o team a collaborare ad un progetto. Github non è la sola compagnia a fornire un simile servizio, vi sono diversi siti concorrenti che offrono servizi analoghi. Uno dei più apprezzati è sicuramente Bitbucket che, al contrario di GitHub, permette di avere un numero di repository private illimitato sin dall’account base gratuito. GitHub è tuttavia la piattaforma più conosciuta e usata per progetti open source e, ad Aprile 2017, contava ben 20 milioni di utenti e 57 milioni di repository. Tra questi sono presenti anche i repository col codide sorgente di Git e Linux.

Perché usare Git

Git è la scelta perfetta per monitorare i cambiamenti di un gruppo di file e cartelle. Git è infatti in grado di salvare delle istantanee di intere directory e file. È quindi possibile visualizzare il contenuto di un file o di una cartella così come era in una delle istantanee salvate. È inoltre possibile ripristinare un file o cartella o confrontare un file con una precedente versione dello stesso. In un progetto che non usa un VCS per mantenere più versioni dello stesso file, bisogna copiarli in cartelle differenti o rinominare i file ‘in maniera creativa’.

esempio progetto senza un version control system

Grazie a Git possiamo lavorare invece in modo più efficiente. Git crea all’interno della cartella, per cui si vuole tenere traccia delle diverse modifiche, una nuova directory .git (sui sistemi Unix-like le cartelle il cui nome inizia con un punto sono nascoste) all’interno della quale manterrà tutte le informazioni relative alle diverse versioni di file e cartelle.

esempio progetto in cui viene usato git com vcs

Sintetizzando alcune delle caratteristiche e delle possibilità offerte da Git, possiamo dire che:

  • permette di collaborare con altre persone in maniera efficiente;
  • consente di ‘andare indietro nel tempo’ e visualizzare versioni precedenti di file e cartelle;
  • permette di confrontare facilmente due differenti versioni dello stesso file e capire quali modifiche sono state apportate e chi è l’autore di tali cambiamenti;
  • si integra alla perfezione con altri sistemi e strumenti per l’esecuzione di unit test e rilascio di nuove versioni di un software;
  • consente di aggiungere nuove funzionalità a un progetto isolando le modifiche e le novità introdotte in modo da non causare perdite di dati o malfunzionamenti.

Come è nato Git

Git non è l’unico software del suo genere. Prima del suo avvento SVN era probabilmente uno dei VCS più diffusi. Git è stato creato da Linus Torvalds per lo sviluppo di Linux. Prima dell’Aprile 2005, infatti, veniva usato come VCS per lo sviluppo di Linux la ‘community edition’ di Bitkeeper. Si trattava di una versione gratuita del DVCS Bitkeeper, un software proprietario realizzato da BitMover. Nell’Aprile del 2005 BitMover revocò l’accesso alla versione gratuita del suo software. Linus Torvalds voleva un sistema di controllo del software distribuito che potesse usare al posto di BitKeeper, ma nessuno dei sistemi gratuiti disponibili soddisfaceva le sue esigenze, specialmente in termini di prestazioni. Decise quindi di creare, con l’aiuto di altre persone, quello che sarebbe poi diventato Git, un software per il controllo di versione distribuito che fosse veloce, efficiente e includesse efficaci misure di sicurezza per prevenire possibili perdite o modifiche non volute dei dati. Come lui stesso ha dichiarato in un’interessante intervista sul palco di TED nel Febbraio 2016, Git nacque inizialmente per esigenze personali a supporto dello sviluppo di Linux.

Conclusioni

In questa lezione abbiamo visto cos’è e come Git può aiutare ad organizzare i file di un progetto facilitando la collaborazione in team e permettendo di lavorare in maniera efficiente. Nel prossima lezione illustreremo come installare Git sui principali sistemi operativi, ovvero Windows, Linux e MacOS.

Pubblicità
Articolo successivo