Capitolo 1
Cos’è Git?
Git non è altro che un software che si occupa del “controllo di versione” (VCS - Version Control System) ed è il più diffuso al mondo, molto semplice!
Ti sei perso qualcosa in questa definizione? Tranquillo o tranquilla, è normale, detto così potrebbe non essere chiarissimo quindi facciamo qualche passo indietro.
Sicuramente ti sarà capitato di:
- Scrivere del codice
- Accorgerti che quello che hai scritto non va bene
- E quindi voler tornare a uno stato precedente
Il problema è che il tasto “annulla modifiche” del tuo IDE non torna così tanto indietro, quindi come fare?
Senza uno strumento come Git dovresti salvare una copia del codice prima di ogni modifica, e anche una dopo ogni modifica importante, in questo modo potresti recuperare una versione precedente quando ti serve.
Ma diciamoci la verità, questa soluzione è assurda! Quante copie del progetto devi tenere? Ogni quanto devi salvare una copia? Quanto spazio ti occupano tutte queste copie?
Fortunatamente, NON devi fare nulla di tutto ciò perché a farlo ci pensa GIT. Infatti, la sua prima funzionalità è quella di mantenere uno storico del progetto.
Quindi in qualsiasi momento è possibile controllare chi, cosa e quando ha modificato il codice, ed eventualmente ripristinare una versione precedente.
Aspetta un attimo, ho detto “chi”, te ne sei accorto?
Infatti, l’altro motivo per cui ha senso usare Git è che permette di condividere il codice facilmente tra le persone che lavorano in uno stesso progetto.
Cosa vorrà mai dire questo?
Supponiamo che io e un’altra persona che chiamiamo Alice stiamo lavorando ad uno stesso progetto.
Io lavoro al login e lei alla registrazione.
Quando terminiamo il lavoro dobbiamo unire quello che abbiamo fatto, giusto?
Ma come possiamo fare visto che entrambi abbiamo lavorato in locale, cioè sui nostri computer personali?
Beh, io posso mandare il mio codice ad Alice tramite email, e lei dovrà unire manualmente le nostre versioni del progetto.
Quindi dovrà aggiungere i file nuovi che abbiamo rispettivamente creato (se ce ne sono) e poi andare a controllare ogni singolo file esistente per capire se ci sono mie modifiche da inserire, stando attenta a non perdere pezzi di codice.
E se il progetto fosse formato da centinaia di file (cosa che spesso accade)? Ecco, che Alice diventerebbe pazza!
Per salvaguardare la nostra salute mentale quando si tratta di merge (cioè unioni), Git consente di condividere le modifiche al codice in modo semplice e veloce e soprattutto automatico.
Infatti devi sapere che Git è un sistema di controllo distribuito. Nel senso che il nostro progetto e tutte le modifiche vengono salvate all’interno di uno speciale database chiamato repository.
Con il sistema distribuito ogni persona del team tiene una copia del progetto nel suo pc (in locale) per poterci lavorare. Solo quando decide di condividere con gli altri le modifiche fatte o di ottenere l’ultima versione del codice, magari con le modifiche fatte dai colleghi, il progetto locale viene sincronizzato con un server centrale.