GitHub: cos'è, funzionalità e come funziona

Autore: IT Sectr Pubblicato: 2026-05-09 Tempo di lettura: 8 min

GitHub è la più grande piattaforma web per l'hosting di repository Git, lo sviluppo collaborativo e l'automazione dei processi, di proprietà di Microsoft. Fornisce non solo archiviazione del codice con controllo di versione, ma anche una suite completa di strumenti di gestione dei progetti: Issue Tracking, Pull Request con revisione del codice, Actions per CI/CD e Wiki per la documentazione. Secondo GitHub, 2024, la piattaforma conta oltre 100 milioni di sviluppatori e 420 milioni di repository.

Punti chiave

  • GitHub è una piattaforma web per repository Git con strumenti di revisione del codice, CI/CD e gestione dei progetti.
  • Pull Request è il meccanismo principale per apportare modifiche con discussione e revisione del codice.
  • GitHub Actions automatizza la compilazione, i test e il deployment senza servizi CI esterni.
  • Issues e Projects forniscono un sistema integrato di tracciamento delle attività e gestione degli sprint.
  • GitHub Pages offre hosting gratuito per siti statici e documentazione.

Cos'è GitHub?

GitHub è un servizio web per archiviare e collaborare su repository Git, fondato nel 2008 da Tom Preston-Werner, Chris Wanstrath e PJ Hyett. Nel 2018, l'azienda è stata acquisita da Microsoft per 7,5 miliardi di dollari. La piattaforma fornisce un'interfaccia web per tutte le operazioni Git, aggiungendo funzionalità social: fork, stelle, iscrizioni, revisione del codice e un sistema di integrazione continua integrato.

La differenza principale tra GitHub e i suoi concorrenti è l'ecosistema aperto e la più grande comunità di sviluppatori. GitHub ospita i codici sorgente di Android, Kubernetes, React, Swift, Kotlin e migliaia di altri progetti open-source. Questo rende la piattaforma non solo uno strumento di archiviazione del codice, ma anche un social network per sviluppatori: puoi seguire progetti, discutere modifiche e contribuire tramite pull request.

Secondo un rapporto di Microsoft (2024), più di 10 milioni di nuove Pull Request passano attraverso GitHub ogni giorno e il numero di utenti attivi mensili ha superato i 100 milioni. La piattaforma supporta oltre 500 linguaggi di programmazione, il rilevamento automatico della lingua tramite estensione del file e l'evidenziazione della sintassi del codice.

Funzionalità principali di GitHub

La funzionalità di GitHub va ben oltre il semplice hosting Git. La piattaforma fornisce: GitHub Actions — un sistema CI/CD integrato; GitHub Packages — un registro di pacchetti e contenitori; GitHub Codespaces — ambienti di sviluppo cloud basati su VS Code; GitHub Discussions — un forum per la comunità; GitHub Security — Dependabot per aggiornamenti automatici delle dipendenze e scansione delle vulnerabilità; GitHub Copilot — un assistente AI per scrivere codice.

Per le organizzazioni, GitHub offre GitHub Enterprise — una versione enterprise con hosting autonomo (GitHub Enterprise Server) o deployment cloud (GitHub Enterprise Cloud). Le funzionalità enterprise includono autenticazione SAML/SSO, registrazione di audit, politiche di sicurezza dei repository e SLA di disponibilità del 99,95%. La versione Enterprise è utilizzata da aziende come Google, Apple e Airbnb.

Una funzionalità importante di GitHub è GitHub CLI (gh), che consente di eseguire tutte le operazioni della piattaforma dalla riga di comando senza utilizzare l'interfaccia web. Con gh, puoi creare repository, gestire Issues, rivedere Pull Request ed eseguire Actions direttamente dal terminale, accelerando il lavoro degli sviluppatori abituati alla riga di comando.

FunzionalitàScopoDisponibilità
ActionsCI/CD e automazioneGratuito 2000 min/mese
CodespacesIDE cloud basato su VS CodeA pagamento, 60 h/mese gratuito
PackagesHosting di pacchetti e immagini DockerGratuito 500 MB
DependabotAggiornamenti automatici delle dipendenzeGratuito per repository pubblici
PagesHosting di siti staticiGratuito

Pull Request e revisione del codice

Pull Request (PR) è il meccanismo principale per apportare modifiche a un progetto su GitHub. Uno sviluppatore crea un branch con le modifiche, lo pubblica su GitHub e invia una richiesta di merge (Pull Request) al branch principale. Gli altri partecipanti al progetto vedono la differenza (diff) tra i branch, possono lasciare commenti su righe di codice specifiche, suggerire modifiche e approvare o rifiutare la richiesta.

Il processo di revisione del codice su GitHub è costruito attorno ai PR. Ogni commento è allegato a una riga specifica del diff e può essere di tre tipi: Comment (commento normale), Request Changes (richiede correzioni) e Approve (approvazione). Dopo aver apportato le modifiche, l'autore aggiorna il PR con un nuovo commit e il processo di revisione si ripete. Una volta risolte tutte le obiezioni e approvato il PR, le modifiche vengono unite nel branch di destinazione.

bash
# Creare un branch di funzionalità e fare push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug

# Creare un PR tramite CLI
gh pr create --base main --title "Fix login validation" \
    --body "Fixed edge case with empty email field"

# Visualizzare e unire un PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug

GitHub supporta le regole di protezione dei branch: puoi impedire push diretti a main, richiedere un numero obbligatorio di approvazioni prima del merge, eseguire controlli Actions e richiedere che il branch sia aggiornato prima dell'unione. La protezione dei branch è configurata in Settings → Branches ed è una pratica obbligatoria per i progetti di produzione, impedendo l'introduzione accidentale di codice instabile nel branch principale.

GitHub Actions e CI/CD

GitHub Actions è una piattaforma CI/CD integrata che consente di automatizzare i flussi di lavoro direttamente nel repository. I flussi di lavoro sono descritti in file YAML situati nella directory .github/workflows/. Ogni flusso di lavoro consiste in uno o più job che vengono eseguiti su runner — macchine virtuali con Linux, Windows o macOS.

Actions supporta un modello basato sugli eventi: i flussi di lavoro vengono attivati su push, creazione di PR, pubblicazione di release, secondo una pianificazione o tramite webhook. Ciò consente di automatizzare la compilazione, l'esecuzione dei test, l'analisi statica del codice, la pubblicazione negli store di app e il deployment su server senza intervento dello sviluppatore. Di seguito è riportato un esempio di flusso di lavoro per un progetto Android:

yaml
name: Android CI

on:
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up JDK 17
        uses: actions/setup-java@v4
        with:
          java-version: '17'
      - name: Build with Gradle
        run: ./gradlew assembleDebug

L'ecosistema di Actions include oltre 20.000 azioni pronte nel GitHub Marketplace. Azioni popolari: checkout (clonare repository), setup-java/setup-node/setup-python (configurazione dell'ambiente), upload-artifact (salvare artefatti di compilazione), cache (caching delle dipendenze per velocizzare), slack-notify (inviare notifiche a Slack). Actions supporta anche compilazioni matriciali — esecuzione simultanea su più versioni di SO o linguaggi.

GitHub Projects e Issues

Issues è un sistema integrato di tracciamento delle attività su GitHub. Ogni Issue ha un titolo, una descrizione, etichette, assegnatari, milestone e Pull Request collegati. Le Issues possono essere modellizzate — modelli diversi vengono utilizzati per segnalazioni di bug, richieste di funzionalità o domande, che vengono inseriti automaticamente al momento della creazione.

GitHub Projects (precedentemente Projects Beta) è uno strumento di gestione dei progetti basato su bacheche, simile a Jira e Trello. Projects supporta campi personalizzati (stato, priorità, sprint), collegamento con Issues e Pull Request, automazione dello spostamento delle carte al cambio di stato dell'attività e analisi sotto forma di diagramma di burndown. Projects è disponibile in due modalità: Table (vista tabella) e Board (bacheca kanban).

Per la gestione delle release, GitHub fornisce Milestones — gruppi di Issue e PR uniti da un obiettivo comune con una scadenza. Ogni milestone mostra i progressi: quante attività sono aperte, quante sono chiuse e se la scadenza viene rispettata. I milestone si integrano con Releases — durante la pubblicazione di una release, puoi collegarla a un milestone e generare automaticamente un CHANGELOG basato sulle Issue chiuse.

GitHub Pages e Wiki

GitHub Pages è un hosting gratuito per siti statici che pubblica automaticamente il contenuto del repository all'indirizzo https://username.github.io/repository. Pages supporta HTML, CSS, JavaScript e generatori statici: Jekyll (integrato), Hugo, Next.js (esportazione) e MkDocs. La configurazione include la scelta del branch e della directory per la pubblicazione, oltre al supporto per domini personalizzati.

Per la documentazione tecnica, GitHub fornisce Wiki — un sistema wiki integrato che viene anche archiviato come repository Git. Wiki supporta Markdown e consente di modificare le pagine sia tramite l'interfaccia web che localmente tramite push nel repository wiki. Ogni pagina Wiki ha una propria cronologia delle modifiche, comoda per documentare API, architettura e processi del progetto.

La combinazione GitHub Pages + Jekyll è una soluzione popolare per i siti di documentazione. Jekyll converte automaticamente i file Markdown in pagine HTML statiche, supporta temi, navigazione e ricerca. Ad esempio, la documentazione di Android Developers utilizzava in precedenza Jekyll su GitHub Pages e ora utilizza una piattaforma interna, ma migliaia di progetti open-source continuano a utilizzare questa combinazione per i loro siti.

GitHub CLI: gestione senza browser

GitHub CLI (gh) consente di eseguire tutte le operazioni della piattaforma tramite la riga di comando: creare repository, gestire Issues, visualizzare e approvare Pull Request, eseguire Actions. Il comando gh repo create my-project --public crea un repository remoto e lo collega a quello locale, mentre gh pr create crea una Pull Request dal branch corrente. CLI accelera il lavoro degli sviluppatori che preferiscono il terminale all'interfaccia web.

API GitHub per l'automazione

GitHub REST API e GraphQL API forniscono accesso programmatico a tutte le funzionalità della piattaforma: creare Issue, gestire utenti, ottenere statistiche e gestire Actions. L'API GraphQL è preferibile per query complesse poiché consente di ottenere solo i campi necessari in un'unica richiesta. Il limite di rate per l'API REST è di 5000 richieste all'ora per utenti autenticati. L'API è ampiamente utilizzata per integrare GitHub con sistemi CI esterni e strumenti DevOps interni.

GitHub Gist per note rapide

GitHub Gist è un servizio per pubblicare frammenti di codice senza creare un repository completo. Gist supporta l'evidenziazione della sintassi, l'incorporamento in siti esterni e la cronologia delle versioni. Ogni Gist può essere pubblico (visibile nelle ricerche) o segreto (accessibile solo tramite link). Gist viene utilizzato per condividere rapidamente configurazioni, log ed esempi di codice nella corrispondenza del team, e anche come alternativa a Pastebin per sviluppatori.

Domande frequenti

Qual è la differenza tra GitHub e GitLab?

GitHub si concentra sulla comunità aperta e sulle funzionalità social (fork, stelle). GitLab offre CI/CD integrato più potente e hosting autogestito senza limitazioni sui minuti di Actions.

Quanto costa GitHub per un team?

GitHub Team costa 4 dollari per utente al mese e fornisce repository privati illimitati, protezione dei branch e Actions (3000 minuti). Il piano gratuito è adatto per piccoli progetti open-source.

Come creare un repository privato?

Durante la creazione del repository, seleziona Private invece di Public. Nei repository privati, il codice è visibile solo ai collaboratori invitati. Sul piano gratuito, i repository privati sono disponibili con un limite massimo di 3 collaboratori.

Cos'è GitHub Copilot?

GitHub Copilot è un assistente AI basato su OpenAI Codex che offre autocompletamento del codice in tempo reale. Funziona in VS Code, JetBrains e Neovim, supportando tutti i linguaggi di programmazione popolari.

Come eliminare un repository su GitHub?

Vai su Settings → Danger Zone → Delete this repository. L'eliminazione è irreversibile — tutti i commit, Issue e Wiki verranno eliminati senza possibilità di recupero. Assicurati di avere un backup preventivamente.

Riepilogo

  • GitHub è la più grande piattaforma per l'hosting di repository Git con strumenti integrati di CI/CD e gestione dei progetti.
  • Pull Request fornisce un processo di revisione del codice con commenti in linea, approvazioni e protezione dei branch.
  • GitHub Actions automatizza compilazione, test e deployment tramite configurazione YAML nel repository.
  • Issues e Projects sostituiscono Jira e Trello per piccoli team con campi personalizzati e bacheche kanban.
  • GitHub Pages e Wiki forniscono hosting gratuito per documentazione e siti statici.
  • L'ecosistema include Copilot (codifica AI), Codespaces (IDE cloud), Packages e Dependabot.
  • Inizia creando un repository e la tua prima Pull Request — questo coprirà le esigenze di base del team.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche