Git - Controllo delle Versioni

08 Feb 2020 | M.A.D.R.

Git, il software di controllo versione distribuito più diffuso e utilizzato al mondo, popolare anche grazie a servizi come GitHub, GitLab e Bitbucket.

Se ti è mai capitato di lavorare ad un progetto, scrivere un documento o preparare del materiale un po’ articolato, ti sarai accorto di come sia facile perdersi anche nel proprio lavoro. Spesso, per tener traccia di modifiche e tentativi di correzione, i file iniziano a spuntare come funghi.

Ecco che troviamo miodocumento.txt accompagnato da miodocumento.txt.old e da miodocumento.txt.versione1. Quale era quello giusto? L’ultimo a cui avevo lavorato contiene tutte le modifiche? Sono domande che capita di porsi e fretta, stress e stanchezza non aiutano certo a darsi le risposte corrette.

Tutto ciò diventa sempre meno gestibile quando si inizia a parlare di grandi progetti, destinati a scenari produttivi, cui probabilmente partecipano professionisti diversi e (perché no?) dislocati in varie parti del mondo: figuriamoci in tali casi come può diventare tutto più complicato. Ciò ha portato alla nascita di un particolare tipo di strumenti software dedicati al controllo di versione, la soluzione ad ogni problema: ne trattiamo qui e ci soffermiamo soprattutto sul campione della categoria ovvero Git.

Controllo di versione: a chi serve?

Per “controllo di versione” intendiamo un sistema informatico che permette di tenere traccia di tutte le modifiche che vengono apportate ad uno specifico progetto.

Spesso si tratta di progetti informatici, ma il controllo di versione può trovare spazio in ogni ambito.

Gli strumenti di tale categoria si accollano l’onere di conservare ogni versione dei file permettendo il recupero di una delle precedenti, tenere traccia delle modifiche, rendere disponibile quanto realizzato fino ad un dato istante e offrire soluzioni in caso di errore.

Attività del genere possono fare comodo a chiunque. Un grafico che lavora alla produzione di un’immagine potrebbe permettersi di tornare indietro al momento della necessità.

Una maestra potrebbe conservare una versione di un quiz con le sole domande ed una successiva completa di risposte fornendole agli allievi in momenti differenti. Oppure una relazione potrebbe essere scritta e conservata tenendo traccia dello stato di avanzamento.

L’uso di strumenti simili si rivela particolarmente utile soprattutto quando si lavora in team. Si ha la possibilità di garantire una certa consistenza di lavoro tra gruppi operativi differenti.

Se, supponiamo, il nostro progetto è suddiviso nel modulo A e nel modulo B, chi lavora al secondo deve poter essere sicuro di farlo interagire con una certa versione del modulo A che espone determinate caratteristiche.

Tratti principali del controllo di versione

Di software per il controllo di versione ne esistono molti e la loro evoluzione si intreccia strettamente con i progressi compiuti dalla comunicazione in Rete, questo per due motivi principali: in primis, si hanno possibilità sempre migliori di trasmettere dati tra macchine differenti; in secondo luogo, il mondo del lavoro si è modificato in modo da agevolare il reperimento di collaboratori in luoghi diversi dal proprio.

Una prima generazione del controllo di versione ha rivelato la sua utilità pur senza fare uso della Rete.

Cos’è Git?

Git è stato ideato da Linus Torvalds, lo stesso che ha inventato il sistema operativo Linux. In realtà, la storia di questi due grandi progetti è collegata infatti Git nacque proprio per facilitare la gestione dell’immensa mole di codice che componeva il kernel di Linux.

Abbiamo detto che Git lavora in maniera distribuita basandosi sullo scaricamento di un’immagine del progetto dal repository principale.

Qui risiede il segreto della velocità di Git.

Dopo esperienze con altri sistemi di controllo di versione ci si potrebbe stupire della rapidità con cui in Git vengono completate le operazioni. Il motivo sta proprio nella prassi di sincronizzare la cartella di lavoro corrente con un repository locale. Pertanto il grosso delle operazioni in Git verranno svolte localmente senza tempi di latenza e con la possibilità di lavorare off-line per buona parte del tempo.

La vita in Git sarà sempre suddivisa in due emisferi:

  • quello remoto, dove lo ricaricheremo al termine del lavoro mediante un’operazione di push;
  • quello locale in cui si svolgerà il grosso della nostra attività.

Questi sono i fondamenti di Git ma per iniziare a studiarlo è importante familiarizzare con il suo glossario di base.

Termini tipici del controllo di versione sono checkout e commit. Hanno in genere un significato legato, rispettivamente, a recupero e salvataggio verso e da repository. 

Cosa serve per usare Git?

Git può essere usato in ogni condizione. E’ un sistema multipiattaforma infatti ne esistono versioni per Linux (sua terra di origine), Windows e Mac. Appena scaricato e installato può essere utilizzato da riga di comando e, nonostante tale modalità non riceva i favori di tutti, Git non pone grandi difficoltà. Tutti i comandi richiamati rispecchiano infatti le principali fasi del ciclo di vita dei file: una buona confidenza con i principi di base del sistema faciliterà molto l’apprendimento del suo utilizzo.

GitHub e GitLab 

La fama di Git, già molto conosciuto, è stata incrementata da servizi on-line dedicati al mantenimento e alla condivisione del codice. Tra i più famosi ci sono , e , il primo, forse il più famoso, è stato acquisito dalla Microsoft a metà 2018.

Qualsiasi programmatore si sarà imbattuto in librerie, framework o progetti residenti in uno di questi servizi ed il motivo sta proprio nella facilità di distribuzione che essi garantiscono.

Tipicamente su una pagina di progetto di Github si potrà trovare documentazione, informazioni, esempi ed il codice sorgente sempre aggiornato del progetto che ci interessa. 

Conclusioni

GIT è divenuto ormai una skill in grado di arricchire qualsiasi curriculum in quanto se non lo si conosce già, sarà comunque l’azienda di assunzione a dover formare il dipendente visto che senza Git ormai non si può portare avanti con successo progetti impegnativi. Inoltre, una buona conoscenza di questo strumento dimostrerà più di molto altro la partecipazione a progetti di ampio respiro e di caratura professionale.

Soluzioni complete per ogni esigenza