W3docs

Introduzione

Descrizioni sui sistemi di controllo versione, gestione del codice sorgente, cos'è Git, come installarlo, chiavi SSH e repository Git.

Sistemi di Controllo Versione

Questo è il punto di partenza del corso Learn Git. Al termine di questa introduzione capirai cos'è un sistema di controllo versione, perché i team ne fanno affidamento, come Git si distingue dagli strumenti più vecchi e come far funzionare Git sul tuo computer. Ogni sezione qui sotto rimanda a un capitolo completo dove l'argomento è spiegato in dettaglio.

Ecco il percorso che questa sezione copre:

Sistema di Controllo Versione

Un Sistema di Controllo Versione (VCS) è uno strumento che registra le modifiche a un insieme di file nel tempo, così puoi richiamare qualsiasi versione precedente, vedere chi ha cambiato cosa e lavorare in parallelo senza sovrascriversi. A volte viene chiamato Source Code Management (SCM) o Revision Control System (RCS).

Esistono tre famiglie di VCS, che si differenziano per dove risiede la cronologia:

  • I VCS locali conservano ogni versione in un database su un singolo computer (ad esempio, il vecchio strumento rcs). Semplici, ma un guasto del disco fa perdere tutto e non c'è vera collaborazione.
  • I VCS centralizzati (CVCS) come Subversion (SVN) o CVS memorizzano la cronologia completa su un unico server centrale. Gli sviluppatori estraggono una copia di lavoro, ma la cronologia esiste solo sul server. Se il server è inattivo, nessuno può fare commit; se viene perso senza un backup, la cronologia del progetto scompare.
  • I VCS distribuiti (DVCS) come Git o Mercurial danno a ogni sviluppatore una copia completa del repository, inclusa tutta la sua cronologia. Puoi fare commit, creare branch e visualizzare il log anche completamente offline, e qualsiasi clone può ripristinare gli altri.

Git è un VCS distribuito, il che è il motivo principale per cui è veloce e resiliente.

Gestione del Codice Sorgente

La gestione del codice sorgente (SCM) è essenzialmente un altro nome per il controllo versione. È la pratica (e gli strumenti) di tenere traccia delle modifiche a un repository del codice sorgente, così puoi rivedere la cronologia, confrontare le revisioni e risolvere i conflitti di merge — la situazione in cui due persone modificano le stesse righe e lo strumento ha bisogno che un essere umano decida quale modifica prevale.

SCM permette a ogni sviluppatore di lavorare autonomamente su un branch separato e di combinare successivamente il lavoro con un merge. Oltre alla cronologia grezza, un buon SCM fornisce blame/annotazione, tagging dei rilasci e la possibilità di annullare una modifica sbagliata in pochi secondi.

Software di Controllo Versione

Il software di controllo versione è il programma concreto che implementa il controllo versione per il tuo team. Per un singolo sviluppatore è comodo; per un team con più sviluppatori è una necessità, perché è l'unico modo sicuro per unire il lavoro di tutti.

Le opzioni più diffuse includono Git, Subversion (SVN), CVS, Mercurial e Monotone. Ogni progetto sceglie quello che si adatta meglio al proprio flusso di lavoro; Git è di gran lunga il più comune oggi. I capitoli seguenti confrontano in dettaglio pro e contro di ciascuno.

Cos'è Git

Git è il sistema di controllo versione distribuito utilizzato nella maggior parte del mondo del software. Tiene traccia delle modifiche al codice sorgente durante lo sviluppo e gestisce progetti di qualsiasi dimensione, da uno script con un singolo file al kernel Linux.

Git si distingue per alcuni motivi:

  • Branching locale economico e veloce — creare un branch è quasi istantaneo perché è semplicemente un puntatore a un commit.
  • Un'area di staging — scegli esattamente quali modifiche vanno nel prossimo commit con git add prima di eseguire git commit.
  • Funziona offline — ogni operazione, tranne la sincronizzazione con un remote, viene eseguita sulla tua copia locale.
  • Integrità dei dati — ogni commit è identificato da un hash SHA-1 del suo contenuto, quindi la corruzione è rilevabile.

Installare Git

Lavorare con Git inizia con l'installazione (o l'aggiornamento della versione esistente). Il programma di installazione varia a seconda del sistema operativo:

  • macOS — il programma di installazione Git for Mac, Homebrew (brew install git), o MacPorts.
  • Windows — il pacchetto ufficiale Git for Windows, che include Git Bash.
  • Linux — il gestore di pacchetti della tua distribuzione, ad es. sudo apt install git su Debian/Ubuntu.

Una volta installato, verifica la versione da un terminale:

git --version
# git version 2.45.2

Il numero esatto che vedrai sarà quello corrente al momento dell'installazione; qualsiasi versione 2.x recente va bene per questo corso.

Repository Git

Un repository Git ("repo") è l'archivio che contiene i file del progetto insieme alla cronologia completa di ogni modifica. La cronologia risiede in una cartella nascosta .git nella radice del progetto.

Puoi creare un repository in uno di due modi — avviarne uno nuovo con git init, oppure copiarne uno remoto esistente con git clone:

# Turn the current folder into a new, empty repository
git init
# Initialized empty Git repository in /path/to/project/.git/

# Or download an existing project and its full history
git clone https://github.com/user/project.git

Chiave SSH

Una chiave SSH è una credenziale di accesso utilizzata dal protocollo SSH (Secure Shell). SSH è un protocollo di rete che ti permette di accedere da un computer a un altro in modo sicuro su una rete non affidabile.

In Git, una coppia di chiavi SSH (una chiave privata che tieni segreta e una chiave pubblica che carichi su GitHub, GitLab, ecc.) ti permette di fare push e pull senza digitare la password ogni volta. Il capitolo sulle chiavi SSH illustra come generare una chiave e aggiungerla al tuo account.

Pratica

Pratica
Quale delle seguenti è una caratteristica di Git come Sistema di Controllo Versione?
Quale delle seguenti è una caratteristica di Git come Sistema di Controllo Versione?
Was this page helpful?