coldwa.st
Tutte le guideProgrammazioneWebDatiStrumentiDatabaseHaskellConcettiCabal e buildToolchainCompilatorePrestazioniEditor e HLS

Programmazione · strumenti · controllo di versione

Cos’è Git?

Di ColdwastAggiornato il 14 giugno 20267 min di lettura#git#tools#workflow
Righe di codice sorgente su uno schermo scuro
Righe di codice sorgente sullo schermo — Git registra la cronologia completa delle modifiche di un codice come questo.

Se scrivi codice, incontrerai Git fin dal primo giorno. È lo strumento che quasi tutti i progetti software usano per tracciare le modifiche, e la base sotto GitHub, GitLab e il flusso di lavoro di sviluppo moderno. Questa guida spiega cos’è Git, la manciata di concetti che lo rendono evidente, perché conta e in cosa differisce da GitHub.

La definizione breve

Git è un sistema di controllo di versione distribuito: registra la cronologia delle modifiche di un insieme di file così che tu possa rivederla, ramificare, unire, collaborare e tornare indietro. Creato da Linus Torvalds nel 2005 per gestire il kernel Linux, è oggi lo standard di fatto. „Distribuito“ significa che ogni copia del progetto porta con sé la sua cronologia completa — puoi lavorare, fare commit e consultare la cronologia interamente offline.

I concetti fondamentali

  • Repository (repo) — la cartella del progetto più tutta la sua cronologia, archiviate in una directory nascosta .git.
  • Commit — un’istantanea salvata dei tuoi file in un dato istante, con un messaggio che descrive la modifica. La cronologia è una catena di commit.
  • Branch (ramo) — un puntatore mobile che ti permette di sviluppare una funzionalità in modo isolato senza disturbare la linea principale (di solito main).
  • Merge (fusione) — combinare le modifiche di un ramo in un altro.
  • Remote (remoto) — una copia condivisa del repository ospitata altrove (ad es. su GitHub) verso cui fai push e da cui fai pull.
Un prompt del terminale su uno schermo
Un prompt del terminale — Git si pilota perlopiù da riga di comando, anche se editor e interfacce grafiche lo avvolgono a loro volta.

Il flusso di lavoro quotidiano

Il ciclo che la maggior parte degli sviluppatori esegue decine di volte al giorno:

git clone <url>      # copy a repository locally
# ...edit files...
git add .            # stage the changes you want to save
git commit -m "Add login form"   # save a snapshot with a message
git push             # send your commits to the shared remote

Per lavorare su qualcosa di nuovo senza rompere la linea principale, crei un ramo: git checkout -b my-feature, fai i commit lì, poi esegui un git merge (spesso tramite una pull request) di ritorno in main. Per recuperare il lavoro altrui, esegui git pull.

Perché Git conta

  • Cronologia e annullamento — ogni modifica viene registrata, quindi puoi vedere chi ha cambiato cosa, quando e perché, e tornare indietro su un errore.
  • Collaborazione — molte persone possono lavorare in parallelo sullo stesso progetto su rami diversi, poi unire in sicurezza.
  • Sperimentazione sicura — crea un ramo, prova qualcosa, scartalo se fallisce — la linea principale resta intatta.
  • È ovunque — l’open source, le aziende, le pipeline CI/CD e il deployment danno tutti per scontato Git.

Git vs GitHub

Vengono confusi di continuo. Git è lo strumento di controllo di versione che gira sulla tua macchina. GitHub (come GitLab o Bitbucket) è un servizio di hosting che archivia repository Git online e aggiunge funzionalità di collaborazione — pull request, issue, controllo degli accessi, CI. Puoi usare Git senza alcun account GitHub; GitHub è un luogo popolare dove collocare un remote Git, non Git stesso.

La curva di apprendimento onesta

Git è potente, e il suo insieme di comandi può sembrare disorientante all’inizio — i merge possono entrare in conflitto, e alcuni comandi possono riscrivere la cronologia in modi che sorprendono i principianti. La buona notizia: il 90 % del lavoro quotidiano usa solo clone, add, commit, push, pull e branch. Padroneggia questi e impara il resto (rebase, stash, reset) quando ne avrai davvero bisogno.

FAQ

Git è la stessa cosa di GitHub? No. Git è il software di controllo di versione sul tuo computer; GitHub è un servizio online che ospita repository Git e aggiunge strumenti di collaborazione. Git funziona senza GitHub.

Cos’è un commit? Un’istantanea salvata del tuo progetto in un dato istante, con un messaggio che descrive cosa è cambiato. La cronologia di un progetto è una sequenza di commit.

Bisogna usare la riga di comando? No — gli editor (VS Code) e i client grafici avvolgono Git, e la maggior parte degli IDE lo integra — ma la riga di comando è universale e vale la pena impararla, dato che ogni tutorial e ogni sistema di CI la parlano.

Cosa significa „distribuito“? Ogni clone di un repository Git contiene la cronologia completa, quindi puoi fare commit, ramificare e scorrere la cronologia offline. Non esiste una singola copia centrale da cui dipendere per lavorare.

Git traccia il codice; gli algoritmi e le API sono ciò che quel codice esprime. Sfoglia altre spiegazioni chiare nel nostro indice delle guide.

Guida indipendente, mantenuta dalla comunità. coldwa.st è un sito di risorse di programmazione; questo articolo è uno scritto esplicativo nuovo e originale su Git. I comandi riflettono il comportamento standard di Git — verifica dettagli e casi particolari sulla documentazione ufficiale di Git.