10 Maggio 2022

Il miglior amico di ogni developer? Git!

Home / News / Approfondimenti / Il miglior amico di ogni developer? Git!

Autore

Team di Wave Informatica

Categoria

Approfondimenti

Tags

Software

Git è uno strumento irrinunciabile per chiunque si occupi di sviluppo software.

Utilizzato soprattutto in ambito informatico, Git permette ai developer (e non solo) di collaborare in maniera sicura ed efficace.

In questo approfondimento ti spieghiamo brevemente cos’è Git, quali sono le sue funzionalità più comuni e in che modo migliora la qualità dei progetti.

Cos’è Git?

Si tratta di un software gratuito e open source per il controllo di versione, utilizzabile da linea di comando o tramite client GUI Git.

“Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.”

Sito ufficiale di Git

In parole semplici, con Git è possibile tenere traccia di tutti i cambiamenti apportati al progetto, ad esempio un software o un sito web.

I comandi di Git

Come abbiamo detto, Git si utilizza principalmente da linea di comando, attraverso un terminale.

Per semplificare l’utilizzo di Git sono stati sviluppati nel tempo dei software di interfaccia grafica, come ad esempio Sourcetree e GitHub Desktop. Esistono inoltre delle estensioni per gli editor di codice sorgente più utilizzati, come ad esempio Visual Studio Code, che consentono di lanciare i comandi Git e visualizzare le versioni dei singoli file.

Schermata del repository di WordPress visualizzato attraverso Sourcetree
Schermata del repository di WordPress visualizzato attraverso Sourcetree

I comandi più comuni sono:

  • $git clone, per creare una copia locale del repository remoto;
  • $git checkout, per spostarsi da un branch all’altro;
  • $git commit, per eseguire un commit (più avanti spieghiamo di cosa si tratta);
  • $git pull, per scaricare l’ultima versione del progetto;
  • $git push, per caricare le modifiche del repository locale verso quello remoto;
  • $git merge, per eseguire l’unione di due branch;
  • $git fetch, per scaricare e rivedere gli ultimi commit sul branch remoto;
  • $git status, visualizza lo stato corrente, per esempio per sapere in che branch locale ci si trova e quali file sono stati modificati.
Alcuni esempi di comandi Git lanciati da terminale
Alcuni esempi di comandi Git lanciati da terminale

Come si utilizza Git

Questo software include moltissime funzionalità anche piuttosto complesse, per questo viene utilizzato principalmente da sviluppatori e professionisti del settore informatico.

Le funzioni principali, utilizzate anche nei progetti più semplici, includono la gestione di branch (detti anche “rami”), la creazione di commit, l’upload e il download delle modifiche al codice.

Il repository

Per prima cosa, è necessario creare un repository, ovvero il “contenitore” che ospiterà il codice del nostro progetto.

Una volta creato il repository, si impostano i vari utenti che vi avranno accesso, con ruoli e permessi specifici.

A questo punto, si definiscono i branch principali, cioè le versioni principali del progetto, che potranno essere modificati anche successivamente.

La gestione dei branch

Un branch, letteralmente “ramo”, rappresenta una versione del progetto. Solitamente si tende ad avere almeno due branch principali:

  • il “main” o “master”, ovvero la versione pubblica e visibile a tutti;
  • il “dev”, “development” o “test”, utilizzato durante lo sviluppo e privato.

È possibile creare anche dei sotto-branch, molto utili sopratutto in fase di sviluppo quando più utenti modificano varie parti del codice.

L’allineamento

Quando un utente vuole collaborare a modificare un determinato progetto su Git, deve prima creare sulla propria macchina una copia locale del repository.

Questo significa che il repository centrale è solo uno, cioè quello remoto, online, mentre gli sviluppatori lavorano su delle copie locali.

Schema della gestione di repository locali e remoti con Git
Schema della gestione di repository locali e remoti con Git

È molto importante che la copia locale e la copia remota del repository siano sempre allineate, cioè identiche, per evitare conflitti.

Se il repository locale non è allineato a quello remoto, lo sviluppatore sta di fatto lavorando su una versione obsoleta del progetto, e le sue modifiche potrebbero non funzionare correttamente.

Il modo migliore di lavorare con Git, dunque, è assicurarsi di essere sempre allenati alla versione remota del progetto.

La creazione di commit

Quando un utente sviluppatore ha terminato una specifica attività, ha bisogno di raggruppare tutte le sue modifiche e applicarle al progetto.

Esegue quindi il comando di commit, ovvero l’archiviazione di tutte le modifiche effettuate ai file dal commit precedente. Un commit deve contenere obbligatoriamente un messaggio, da utilizzare come descrizione delle modifiche.

Se considerassimo lo sviluppo di un software, di un sito web o di un’applicazione mobile come un lungo viaggio, il commit rappresenterebbe una delle tappe di questo viaggio.

Il merging

Eseguire il merging significa unire due versioni, o branch, del progetto.

L’esempio più tipico è il merging del branch di sviluppo nel branch di produzione.

Con questa operazione possono verificarsi dei conflitti da risolvere. Ciò avviene quando nella stessa linea di codice di un file ci sono due o più cambiamenti provenienti dai due branch, oppure se il file che contiene delle modifiche in un branch è stato eliminato nell’altro branch.

I vantaggi di usare Git

Utilizzare un sistema di versionamento come Git porta enormi benefici al processo di sviluppo software, come ad esempio:

  • apportare modifiche alla produzione rapidamente dopo averle testate;
  • maggiore facilità nell’individuare bug;
  • possibilità di ripristinare il codice a una versione precedente;
  • storico dettagliato di tutte le modifiche al codice;
  • collaborazione semplificata fra gli sviluppatori, anche in remoto.

Questi sono solo alcuni dei motivi per cui qualsiasi sviluppatore o software house usa Git per i propri progetti.