GitHub: cos’è un Git e come funziona

Con questa guida vorrei introdurvi all’argomento dei Git, i software di versioning per il software di cui Github e Bitbucket sono probabilmente i migliori e più funzionali (oltre ad essere free per l’utilizzo base). Una volta familiarizzato con l’interfaccia di comando non sarà complicato riuscire ad utilizzare per effettuare copie condivise, pubblicamente o privatamente, del vostro sudato codice, ed avrete così l’opportunità di effettuarne più copie delle diverse versioni temporali.

Cos’è il Git

Software come BitBucket e GitHub offrono un servizio online di archiviazione e manutenzione del codice mentre lo stiamo scrivendo, in modo da:

  • avere un backup di una versione ad una certa data / ora;
  • poter ripristinare una versione precedente in caso di bug;
  • avere la possibilità di gestire i vari branch del codice, ovvero le versioni leggermente diverse o customizzate di un software sul quale stiamo lavorando.

Se sei un webmaster, uno sviluppatore backend, frontend o full stack, o se semplicemente ti diverti ad aggiornare il tuo sito periodicamente lato plugin, theme child e via dicendo, il Git può essere un componente fondamentale del tuo lavoro quotidiano. Tutte le attività indicate rientrano nelle pratiche di buona programmazione detta versioning del codice, e sono fondamentali soprattutto quando si lavora in team.

Come abbiamo visto, quindi, il Git è un software a linea di comando che non fa altro che salvare in remoto una serie di “istantanee” del filesystem, ovviamente nella locazione da noi indicata (ad esempio la cartella /www di un sito). A questo punto la maggioranza delle guide che trovate sull’argomento si addentra in concetti tecnici legati alla struttura stessa di quest’ultimo, ed è per questo che finiscono per essere particolarmente ostiche per i non addetti ai lavori.

In realtà Git è uno strumento pratico che alla fine dei conti, con l’abitudine, si usa “senza pensare” troppo a quello che c’è dietro, per cui è opportuno farne un utilizzo concreto – cosa che vedremo in questa guida sui software tipo Github.

Cosa significa Git?

git non è un acronimo come si potrebbe pensare, ma ha un significato molto più divertente: stando al dizionario, infatti, git è uno slang americano per indicare cretino, idiota, scemo.

Chi ha inventato il Git

Il Git è stato creato per la prima volta da Linus Torvalds nel 2005, e funzionante mediante riga di comando o terminale.

Cos’è un repository

Un repository è un archivio strutturato che contiene del codice, ad esempio quello di un plugin, di un progetto informatico di qualsiasi genere, di un sito o del codice di un’app. Esso contiene sia il codice, materialmente, che le metainformazioni temporali sul chi ci ha lavorato e sul quando sono state effettuate le modifiche. Tecnicamente un repository è detto, in alcuni casi, anche metabase.

Cos’è il commit

L’operazione di commit consiste nell’invio delle modifiche che abbiamo fatto al repository principale.

In pratica funziona così:

  • modifichiamo del codice;
  • effettuiamo delle modifiche in locale, o secondo le politiche aziendali eventualmente esistenti;
  • a questo punto possiamo fare il commit del codice, ovvero aggiornarlo sul repository perchè tutti lo vedano.

Cos’è Bitbucket

Bitbucket è l’implementazione di un Git dell’azienda Atlassian, che offre il servizio sia mediante piani a pagamento (per aziende con molti dipendenti) che account gratuiti (per singoli programmatri freelance e piccoli gruppi di lavoro). Esso offre account gratuiti ed un numero illimitato di repository privati fin dal settembre 2010.

Cos’è Github

GitHub è un servizio di hosting per progetti software. Il nome deriva dal fatto che “GitHub” è una implementazione dello strumento di controllo versione distribuito Git. Si tratta di una piattaforma molto potente che contiene svariate implementazioni di software open source, utili per le personalizzazioni e che si possono installare sia direttamente da linea di comando Git che, ad esempio, sfruttando (in PHP, per esempio) soluzioni per gestire in modo organizzato le dipendenze software come il composer.

Ad oggi, Github è gestito dalla Microsoft.

Controllo Versioni: che vuol dire?

La logica del controllo delle versioni di un software è indispensabile per avere piena padronanza di un software, ed ottimizzarlo ogni giorno tenendo traccia di quello che si fa. Se non ci fosse il controllo di versione, in sostanza, non si potrebbe nemmeno lavorare in parallelo ad un progetto, e questo (soprattutto quando è diventato bello grosso) è un problema di gestione enorme. Il controllo versione aiuta i vari developer, soprattutto se lavorano in team (anche da remoto, eventualmente) a tenere traccia e gestire in modo ragionati le modifiche al codice di un qualsiasi software: un’app, un sito e via dicendo.

Che significa branching?

Per essere più elastici nella gestione del codice è fondamentale ricorrere a questa pratica: il branching, infatti, nel gergo del git è quando il codice sorgente modificato da un programmatore viene a costituire una ramificazione del codice originario, ad esempio per assolvere a funzionalità specifiche lasciando intatto, così facendo, il codice originale.

In genere il branching lavora su una porzione localizzata di repository, mentre tutte tali modifiche vengono monitorate da un project manager, di solito, e possono essere ripristinate all’occorrenza (rollback) in caso di bug o problemi vari.

Che significa merging?

Per essere più elastici nella gestione del codice è inoltre importanti, in casi specific, ricorrere a quest’altra pratica: il merging, infatti, nel gergo del git è quando il codice sorgente modificato da un programmatore viene a sostituire il codice originario, sovrascrivendo quello originale.

Tutte queste modifiche vengono monitorate da un project manager, in genere, e possono essere ripristinate all’occorrenza in caso di bug o problemi vari.

Installazione del Git

Parliamo ora dell’installazione di Git che può avvenire per Windows, Linux e Mac in questo modo: come prima cosa, si scarica online da questi siti, oppure si installa direttamente con i comandi da terminale apt-get o dnf.

Come verificare che il proprio git funzioni

Una volta installato, si può effettuare il check che il git funzioni: da terminale di comando, a cui fareste bene ad abituarvi da subito, basta digitare:

git --version

seguito da Invio per verificare che sia tutto funzionante e visualizzare la versione di Git corrente (al momento in cui scrivo è la 2.14.3, almeno su Apple).

Come scaricare un progetto da Github

Github è probabilmente uno dei migliori e più forniti repository di codice open source: per mettervi subito al lavoro, esso permette di scaricare i contenuti dei vari repository direttamente con questo software da linea di comando. Per chi è pigro, il codice basta scaricarselo in formato ZIP direttamente da browser, visto che da tempo hanno abilitato l’opzione di download.

Github: che cos’è un clone

Con l’uso corretto di Git, tuttavia, potrete accedere ad opzioni ulteriori da linea di comando, e pensare ad esempio di:

  • scaricare il codice di un programma
  • modificarlo a vostro piacere, oppure correggere dei bug eventuali al suo interno
  • ricaricarlo nel git come branch alternativo (ovviamente, il più delle volte, ciò avviene previa approvazione della modifica da parte del programmatore che l’ha pubblicato).

L’operazione di download in questo caso viene detta clone, e in Git serve identificare il percorso del repository che volete scaricare, ad esempio l’implementazione ufficiale di Ethereum:

https://github.com/ethereum/wiki.git

caratterizzato dall’estensione .git, che potrete clonare da linea di comando come segue.

Prima cosa, non clonate dove capita! Ponetevi nella giusta directory, ad esempio da terminale digitate:

cd Documenti

dentro Documenti create ad esempio una cartella:

mkdir ethereum

poi entrateci

cd ethereum

e poi siete pronti a clonare digitando:

git clone https://github.com/ethereum/go-ethereum.git

Questo è quello che vedrete digitando Invio: in pratica vi sta scaricando i file del progetto.

Il risultato sarà aver creato una cartella go-ethereum con tutti i file del progetto pronti ad essere modificati, compilati, estesi e così via. Ovviamente mi sono riferito all’implementazione del protocollo Ethereum ma avrei potuto clonare qualsiasi altra cosa che sia pubblicamente disponibile su Github: plugin per WordPress, software open source per editing, videogame open source e così via.

Chiarito questo (speriamo!), passiamo alla fase successiva ovvero: come creare un vostro repository su Bitbucket (non uso Github nel seguito, ma lì la procedura è analoga: una differenza, BitBucket vi permette di creare anche repository privati).

Come organizzare il lavoro in Bitbucket

BitBucket è un Git gratuito e sicuro che offre la possibilità di gestire più repository, cioè più “depositi” di software separati tra loro, e condivisibili/partizionabili eventualmente su Progetti ed Utenti a vostra scelta (così come Team e Snippets).

I repository in genere possono essere pubblici (cioè consultabili, scaricabili ed ispezionabili da chiunque) e ciò è tipico dei progetti free e open source – oppure privati (ad esempio un rilascio di codice personalizzato per un vostro cliente: in tal caso solo lui potrà accedere al codice e visionarlo/scaricarlo). A parte questo, possono essere facilmente condivisi ed utilizzati tra più programmatori, ognuno dei quali può gestire le proprie versioni alternative (branch) e recuperare il codice che gli serve direttamente online.

Come creare un repository da zero

In Bitbucket (ma anche Github) la creazione di un nuovo repository avviene direttamente da interfaccia web, cliccando sul simbolo + e creando ad esempio trovalost-repo: fate attenzione che ho spuntato semplicemente la selezione “This is a private repository” e lasciato, almeno per l’uso base, tutto così com’era (accertatevi giusto di aver selezionato Git.

Cliccando su Create repository, avrete pronto in pochi secondi un repository vuoto.

Se lavorate in team, a destra nella pagina successiva dovreste vedere subito il bottone per inviare gli inviti, con tanto di permessi per ogni utente: lettura, scrittura e admin.

Come caricare i file nel repository (una commit spiegata passo-passo)

Prendiamo nota dell’URI, anzitutto, e cioè:

https://[nome_utente]@bitbucket.org/[...]/trovalost-repo.git

salvate quello giusto nel vostro caso, e da terminale di comando andate nella directory dove ci sono i file del vostro progetto (poniamo che sia feelter).

cd feelter

Come prima cosa dovrete inizializzare la prima push su Git:

git init

e poi

git add .

per aggiungere tutti i file e relative cartelle contenute nella cartella corrente, feelter.

A questo punto siete pronti ad inviare la commit iniziale:

git commit -m "Initial commit"

qui è importante cosa succede, perchè vedrete l’elenco dei file che saranno caricati. Ora dovete aggiungere l’origine remota:

git remote add origin https://[...]@bitbucket.org/[...]/trovalost-repo.git

e finalmente potrete caricare materialmente i file:

git push origin master

Dopo qualche istante i file saranno stati caricati, e ve li ritroverete nel repository di BitBucket.

Come è fatto Github

L’interfaccia web di Github è, a differenza di qualche tempo fa, davvero molto semplice ed intuitiva, e molte cose si possono fare anche direttamente da browser senza linea di comando. Nel video tutorial qui riportato ho provato a descrivere:

  1. una panoramica principale del sito;
  2. come cercare codice dentro Github;
  3. cosa possiamo fare con Github per il nostro lavoro;
  4. come “stellare” i progetti che ci interessano.

Eccovi il video che ho realizzato per farvi vedere Github nella pratica.

2 voti