9.0 Un po' di storia
Dalla sua creazione, il tool Git DVCS aveva un ramo di default chiamato master
. Ogni repository Git aveva un ramo master
, a meno che lo sviluppatore non compisse passaggi espliciti per rimuoverlo, cosa che accadeva raramente poiché il ramo master
svolge un ruolo importante nel mondo dello sviluppo software.
L'uso dei termini master
e slave
(padrone e schiavo) nell'industria informatica ha attirato l'attenzione generale nell'estate del 2020 a causa delle numerose proteste e delle crescenti tensioni sociali. Durante il dibattito pubblico sono emerse diverse alternative al master
, tra cui default
e primary
. Tuttavia, il termine più popolare è diventato main
.
GitHub ha preso provvedimenti e ha rinunciato al termine master
durante l'inizializzazione del repository Git. Il passaggio di GitHub da master
a main
è possibile nelle impostazioni dell'account Repositories o tramite il comando:

$ git branch -m master main
Nelle lezioni successive si utilizza il termine master
. Maggiori dettagli sulla transizione possono essere trovati nei seguenti link:
9.1 Cos'è Git e perché serve
Git è un potente sistema di controllo delle versioni, utilizzato per tracciare le modifiche nel codice sorgente durante lo sviluppo software. Permette agli sviluppatori di salvare diverse versioni dei file e di coordinare il lavoro di più persone su un progetto comune.
Concetti fondamentali di Git:
Repository
Un repository (o "repo") è il luogo in cui è conservata tutta la storia del progetto, comprese tutte le modifiche e le versioni dei file. In Git un repository include la directory di lavoro, l'indice (o staging area) e il database degli oggetti.
Commit
Un commit è lo stato salvato del progetto. Ogni commit in Git contiene informazioni su quali modifiche sono state apportate al progetto, da chi e quando. I commit formano la storia del progetto e permettono di tornare a qualsiasi versione precedente.
Rami
Un ramo (branch) è una linea di sviluppo indipendente. Di default Git crea il ramo main (precedentemente master). Puoi creare nuovi rami per sviluppare nuove funzionalità o correzioni, per poi unirli nuovamente nel ramo principale.
Merge e rebase
Merge e rebase sono due modi per integrare modifiche da un ramo ad un altro. Il merge unisce le storie di due rami creando un nuovo commit, mentre il rebase trasferisce i commit di un ramo sulla cima di un altro, cambiando la storia dei commit.
9.2 Comandi principali di Git
Ecco una tabella con i comandi principali di Git per la gestione delle versioni:
Comando | Descrizione |
---|---|
git init | Inizializza un nuovo repository Git nella directory corrente. |
git clone | Clona un repository dall'URL in una nuova directory. |
git add | Aggiunge file all'indice per il commit successivo. |
git commit | Registra le modifiche preparate nel repository. |
git push | Invia le modifiche dal repository locale a quello remoto. |
git pull | Aggiorna il ramo corrente con l'ultima versione dal repository remoto. |
git branch | Mostra, crea o elimina rami. |
git merge | Unisce le modifiche del ramo specificato nel ramo corrente. |
git rebase | Trasferisce modifiche su una nuova base (spesso, un altro ramo). |
Questi comandi rappresentano gli strumenti principali per lavorare con Git, permettendo di gestire le modifiche del codice, i rami e le fusioni nei progetti di qualsiasi dimensione. Ne discuteremo più dettagliatamente nelle lezioni successive.
9.3 Tre luoghi di archiviazione del codice
Quando utilizzi un sistema di controllo delle versioni per il tuo codice, il codice, grossomodo, sarà archiviato in tre luoghi:
1. Repository remoto:
È un luogo centralizzato per l'archiviazione del tuo codice, solitamente ospitato su servizi come GitHub, GitLab, o Bitbucket. Offrono un'archiviazione centralizzata del codice e sono la base per la collaborazione.
I repository remoti permettono agli sviluppatori di condividere le loro modifiche, sincronizzare gli sforzi e mantenere la cronologia delle modifiche del progetto. Inoltre, il repository remoto funge da punto di integrazione per l'automazione dei processi, come la costruzione, il test e il deployment delle applicazioni.
2. Repository locale:
Un repository locale è la tua copia personale del codice, conservata sul tuo computer. In questo repository puoi eseguire tutte le operazioni con Git (commit, branching, merge) senza necessità di connessione a internet.
I repository locali permettono agli sviluppatori di lavorare isolatamente dai colleghi, sperimentare, creare nuove funzionalità o correggere errori, prima che le modifiche vengano unite (merge) e inviate al repository remoto.
3. Directory di lavoro:
La directory di lavoro sul tuo computer contiene i file attuali del progetto su cui stai lavorando in questo momento. È il luogo dove puoi vedere e modificare i file, aggiungere nuove funzionalità o correggere errori.
Dopo aver apportato modifiche, puoi aggiungerle all'indice (staging area) e quindi salvarle nel repository locale. La directory di lavoro è collegata al ramo corrente del tuo repository, e cambiare i rami modifica il contenuto della directory di lavoro.
Questi componenti insieme forniscono un'infrastruttura potente per gestire il codice sorgente, permettendo agli sviluppatori di gestire la storia del progetto, collaborare e condividere la responsabilità del codice.
9.4 GitHub — il repository gratuito più popolare
GitHub è la piattaforma web più grande per l'hosting del codice sorgente, utilizzando il sistema di controllo delle versioni Git. Fondata nel 2008, è rapidamente diventata uno degli strumenti chiave per gli sviluppatori in tutto il mondo.

GitHub consente agli utenti di creare repository per gestire i progetti, controllare e tracciare le modifiche nel codice, collaborare con altri sviluppatori e sviluppare in modalità pubblica o privata. Offre funzionalità come forchette, rami, pull request e fusioni, che permettono agli sviluppatori di collaborare facilmente su progetti.
GitHub include anche funzionalità per il tracciamento delle problematiche, richieste di funzionalità, gestione delle attività e wiki per ogni progetto. La piattaforma si integra con numerosi strumenti e servizi, offrendo ampie possibilità per l'automazione dello sviluppo, testing e deployment delle applicazioni.
GitHub supporta un'ampia community di sviluppatori, in cui si discutono attivamente le migliori pratiche di programmazione, gestione dei progetti e molto altro ancora. Questo lo rende non solo uno strumento per la gestione dei progetti, ma anche un centro comunitario, dove gli sviluppatori possono condividere conoscenze ed esperienze.
9.5 Registrazione su GitHub

Passo 1. Vai su https://github.com
Passo 2. Registrati…
Passo 3. Clicca sul pulsante "New" per creare un nuovo repository.
Passo 4. Specifica il nome del repository e imposta i suoi parametri.
Passo 5. Aggiungi un file README al progetto — ci servirà in futuro.
Passo 6. Premi "Create repository".
GO TO FULL VERSION