Git e GitHub: guida completa a installazione, versionamento e collaborazione professionale
Dalla teoria del controllo versione distribuito alla pratica quotidiana: installare Git su Windows, macOS e Linux, configurarlo con VS Code, eseguire il primo commit e push, clonare repository, gestire fork, pull request, issue e Project Board, fino agli strumenti avanzati come .gitignore, tag e GitHub Pages.
1. Introduzione
Nel mondo dello sviluppo software moderno, la gestione efficace del codice sorgente è una competenza imprescindibile. Strumenti come Git e piattaforme collaborative come GitHub rappresentano lo standard di riferimento per il versionamento e la collaborazione nei progetti di qualsiasi dimensione, dal piccolo progetto personale fino al software enterprise.
In questo articolo approfondiremo cosa sono Git e GitHub, comprenderemo le loro differenze e analizzeremo l’importanza del versionamento nel ciclo di vita del software. È il punto di partenza che useremo in tutte le attività di laboratorio da qui in avanti.
2. Cos'è Git
Git è un sistema di controllo versione distribuito (DVCS) creato da Linus Torvalds nel 2005 per supportare lo sviluppo del kernel Linux.
Le principali caratteristiche di Git sono:
- Velocità di esecuzione: quasi tutte le operazioni sono locali, quindi immediate
- Distribuzione: ogni sviluppatore possiede una copia completa del repository con tutta la storia
- Integrità: ogni cambiamento viene tracciato con checksum sicuri
- Branching rapido: creare e fondere rami è leggerissimo e quotidiano
In altre parole, Git consente di tenere traccia delle modifiche, ripristinare versioni precedenti e lavorare in parallelo su funzionalità diverse senza interferire con gli altri.
3. Il concetto di Versionamento del Codice
Il versionamento è il processo attraverso cui gestiamo le modifiche al codice nel tempo. Un sistema di controllo versione consente di:
- Salvare “istantanee” del progetto in momenti diversi
- Esplorare o ripristinare versioni precedenti
- Gestire più linee di sviluppo tramite branch
- Coordinare il lavoro di più sviluppatori contemporaneamente
Ogni modifica rischierebbe di sovrascrivere irreversibilmente il lavoro precedente, aumentando notevolmente rischio di errori e perdite di dati. È come scrivere una tesina senza mai fare salva con nome.
4. Cos'è GitHub
GitHub è una piattaforma web che offre hosting per repository Git. Oltre a consentire il semplice salvataggio online, introduce funzionalità avanzate come:
- Collaborazione tramite fork, pull request e revisioni
- Gestione di problemi e attività tramite Issue e Projects
- Automazione di processi (test automatici, CI/CD con Actions)
- Pubblicazione di siti statici tramite GitHub Pages
Nato nel 2008, è oggi il servizio di hosting Git più popolare al mondo ed è stato acquisito da Microsoft nel 2018.
5. Differenze tra Git e GitHub
| Caratteristica | Git | GitHub |
|---|---|---|
| Tipologia | Strumento locale | Servizio web remoto |
| Funzionalità | Controllo versione | Hosting, collaborazione, gestione, CI |
| Internet | No | Sì (per accesso remoto) |
| Proprietà | Open-source, gratuito | Proprietario (Microsoft), piano free e pro |
Git è lo strumento che usiamo localmente per versionare; GitHub è la piattaforma che ci consente di archiviare online e collaborare con altri. Uno sta sul tuo PC, l'altra sta su Internet.
6. Perché imparare Git e GitHub
Oggi la conoscenza di Git e GitHub è considerata fondamentale per sviluppatori, ingegneri DevOps, amministratori di sistema, docenti e studenti di informatica. I vantaggi:
Ogni modifica documentata
Autore, data, messaggio: sai sempre chi ha fatto cosa.
Team distribuiti
Lavoro asincrono con branch, PR e code review.
Richiesto nei colloqui
Portfolio GitHub = curriculum tecnico moderno.
Sicurezza: il rischio di perdita accidentale di codice è drasticamente ridotto perché ogni clone è un backup completo.
7. Cos'è Git? Approfondimento teorico
Git è un sistema distribuito: a differenza di sistemi centralizzati come SVN, ogni utente ha copia completa del repository, migliorando sicurezza, velocità e autonomia. Puoi lavorare offline e sincronizzare dopo.
Backup completo su ogni dispositivo · Gestione semplice di branch e versioni · Collaborazione efficiente su progetti condivisi
Controllo versione distribuito vs centralizzato: SVN richiede connessione continua al server centrale. Git ti permette di fare commit, branch e log offline. Fondamentale quando lavori in treno o in laboratorio con rete instabile.
8. Come Installare Git - Sezione Pratica
8.1 Installare Git su Windows
- Vai su https://git-scm.com
- Clicca su Download e scegli versione per Windows
- Avvia il file .exe e segui setup mantenendo impostazioni predefinite
- Concludi con Finish
- Apri Git Bash e digita
git --version
Durante installazione seleziona “Git Bash Here” e “Add Git to PATH” per integrare Git nel menu contestuale di Windows e usarlo da VS Code.
8.2 Installare Git su macOS
Consigliato Homebrew:
In alternativa scarica pacchetto ufficiale da git-scm.com e segui installazione guidata.
8.3 Installare Git su Linux
Ubuntu/Debian:
Fedora:
9. Prima Configurazione di Git
Dopo installazione è fondamentale configurarlo. Prerequisito utile: Visual Studio Code installato.
Impostare nome utente e email
🔹 Questi dati verranno associati a ogni commit.
Verificare la configurazione
Configurazioni opzionali utili
| Configurazione | Comando | Utilità |
|---|---|---|
| Colori output | git config --global color.ui auto | Abilita colori in status, diff: più leggibile, individui subito file modificati e conflitti. |
| Editor VS Code | git config --global core.editor "code --wait" | Apre VS Code quando Git richiede editor (es. commit senza -m). --wait fa attendere chiusura editor. |
| Line endings Windows | git config --global core.autocrlf true | Gestisce differenze CRLF Windows vs LF Linux/macOS. Evita conflitti in team misto. |
☐ Nome utente impostato · ☐ Email configurata · ☐ Colori attivati · ☐ Editor configurato (VS Code) · ☐ core.autocrlf su Windows
10. Testare l'installazione di Git
Crea un primo repository di prova:
- In una directory a piacere, es. Desktop, crea cartella “Progetti con Git e GitHub”.
- Posizionati dentro ed apri VS Code dal Terminale Bash di Git:
Si aprirà VS Code nella cartella. Crea dentro sottocartella git-test che sarà la repository di prova.
- Apri terminale e digita:
Crea cartella nascosta .git con tutte le info di versionamento. Se in Windows abiliti “visualizza file nascosti” la vedrai.
- Crea file README.md in git-test, poi:
Ora hai installato e configurato Git correttamente!
11. GitHub - Sezione Teorica
GitHub è piattaforma di hosting per repository Git con issue tracking, wiki, Actions per CI/CD, code review.
- Hosting sicuro repo pubblici e privati
- Collaborazione tramite pull request
- Gestione issue, wiki e documentazione
- Integrazione automazione
12. Come Creare un Account GitHub e un nuovo Repository
Account
- Vai su https://github.com
- Clicca Sign Up, inserisci username, email, password sicura
- Verifica email, scegli piano gratuito (sufficiente, permette repo privati)
Nuovo Repository
- Dopo login, clicca pulsante New
- Inserisci:
- Repository name: nome significativo es. progetto-git-test
- Descrizione facoltativa ma consigliata
- Visibilità: pubblico o privato
- Non spuntare “Initialize this repository with a README” se hai già progetto locale
- Clicca Create Repository
GitHub propone maschera con comandi utili per collegare locale.

13. Collegare il Repository GitHub al Progetto Locale
Abbiamo creato localmente cartella git-test. Vogliamo collegarla al remoto. Da VS Code:
origin è nome predefinito del repository remoto. main è branch principale (oggi sostituisce master). Con git remote add origin ... diamo nome origin al remoto. Con git branch -M main rinominiamo branch locale in main. Con git push -u origin main facciamo primo push e colleghiamo branch locale a remoto (tracking/upstream).
Abbiamo fatto primo PUSH! Aggiornando pagina GitHub vedrai README.md.

14. Panoramica dei Comandi Git di Base
| Comando | Descrizione | Quando si usa |
|---|---|---|
git init | Inizializza nuovo repository | Quando crei nuovo progetto |
git status | Mostra stato file | Per verificare modifiche |
git add | Aggiunge file a staging | Prima del commit |
git commit | Registra modifiche | Dopo aver aggiunto file |
git push | Invia modifiche a remoto | Dopo commit |
git pull | Scarica modifiche da remoto | Per aggiornare progetto |
git clone | Copia locale di repo remoto | Per iniziare su progetto esistente |
15. Dal init al commit: flusso dettagliato
Inizializzare un nuovo progetto
Nel nostro esempio avevamo creato git-test e poi eseguito git init.
Controllare lo stato
Output tipico dopo push: branch aggiornato, nothing to commit.
Aggiungere file a staging
Zona intermedia tra working directory e repository. Raccogli le modifiche che includerai nel prossimo commit. Permette di selezionare solo alcuni file o porzioni.
Salvare con commit
L'opzione -m evita apertura editor. Se ometti -m, Git apre editor configurato con core.editor.
Inviare a remoto
Aggiornare locale
Esegue fetch + merge delle modifiche remote.
Clonare repository esistente
Per clonare clicca pulsante verde “Code” su GitHub e copia URL.
Cronologia
16. Collaborazione su GitHub
Collaborare non significa solo caricare codice, ma lavorare in squadra organizzata:
- Forkare un progetto
- Proporre modifiche tramite Pull Request
- Segnalare problemi con Issue
- Organizzare lavoro con Project Board
GitHub permette di collaborare senza essere online contemporaneamente, grazie a PR e Issue.
Come Forkare un Repository
Fork = creare copia di repository sul proprio account.
- Vai sul repository da forkare
- Clicca pulsante Fork in alto a destra
- GitHub crea copia sul tuo profilo
Quando vuoi proporre modifiche a progetto non tuo, o creare versione personalizzata.

Come Creare una Pull Request
Dopo modifiche nel tuo fork, puoi proporle al repository originale.
- Dal tuo fork, clicca Pull Request > New Pull Request
- Seleziona tuo branch e confrontalo con branch principale originale
- Scrivi titolo chiaro e descrizione dettagliata
- Clicca Create Pull Request
Descrizione modifiche · Motivazione · Riferimenti a Issue collegate (Fixes #numero). Una PR chiara viene approvata più velocemente.
Come Segnalare Problemi: Le Issue
Issue = strumento per segnalare bug, proporre miglioramenti, discutere idee.
- Clicca scheda Issues del repository
- Clicca New Issue
- Inserisci titolo descrittivo e testo dettagliato
- Assegna etichette (bug, enhancement, help wanted...)
Essere chiari e concisi · Fornire dettagli tecnici (versione, errori) · Usare template se disponibili.

Gestire il lavoro con Project Board
Project Board = strumento kanban di GitHub per organizzare lavoro in colonne (To do, In Progress, Done).
- Vai su Projects > New Project
- Scegli modello Basic Kanban
- Aggiungi colonne e card relative a issue, PR o note

Quando progetto coinvolge più task o sviluppatori, o vuoi tracciare avanzamento.
Flusso di collaborazione tipico
17. Approfondimenti e strumenti utili
Git e GitHub offrono funzionalità avanzate che migliorano esperienza di sviluppo.
.gitignore e file non tracciati
Il file .gitignore specifica quali file Git deve ignorare (log, node_modules, .env, .DS_Store).
Usa gitignore.io per generare automaticamente .gitignore personalizzati per stack (Node, Python, Java...).
Tagging con git tag
I tag marcano punti precisi nella storia, tipicamente versioni di rilascio.
Integrazione con Visual Studio Code
VS Code è uno dei migliori editor per Git/GitHub:
- Assicurati Git installato
- Apri progetto in VS Code
- Configura:
git config --global core.editor "code --wait" - Usa barra laterale Source Control per commit, branch, merge

Tramite pulsante Source Control puoi creare commit direttamente da VS Code, vedere diff, risolvere conflitti con editor visuale, fare push/pull senza terminale.
GitHub Pages: pubblicare siti statici
Servizio gratuito per ospitare siti statici da repository.
- Crea nuovo repository
- Aggiungi file statici (index.html, CSS, JS)
- Vai su Settings > Pages
- Seleziona branch e cartella da pubblicare
- User Site: username.github.io
- Project Site: username.github.io/nome-progetto
Ideale per portfolio, documentazione, progetti personali.

18. Conclusione e FAQ
L’uso di strumenti avanzati come .gitignore, tag, Semantic Versioning e GitHub Pages consente di sfruttare appieno potenziale Git e GitHub. Integrando flusso con VS Code e estensioni, ottieni gestione codice efficiente e professionale.
📚 Prossimo passo
Ora sperimenta: crea un repository per un progetto, carica i file, e prova flusso fork → branch → PR con un compagno. È il modo migliore per fissare concetti prima di passare a CI/CD e GitHub Actions.
FAQ
Come verifico se Git è installato?
👉 git --version nel terminale.
Posso usare Git senza GitHub?
Sì, Git è locale; GitHub è hosting remoto.
Cosa significa inizializzare repo?
Creare database locale versionamento con .git.
Clone vs pull?
clone copia repo esistente, pull aggiorna repo già clonato.
Dimenticato remote?
Aggiungi dopo: git remote add origin URL.
Cambio branch predefinito?
git branch -M main.
Più file in un commit?
Sì, git add . o elenca file.
Errore nel commit?
git commit --amend per correggere ultimo.
Devo pushare sempre?
No, accumula commit locali poi unico push.
