Branch

Quando si lavora a una nuova funzionalità, o alla correzione di un bug, è buona regola aprire un nuovo ramo (branch):
Il ramo Master (negli ultimi anni si preferisce chiamarlo main) è quello principale, che viene messo "in produzione", e cioè caricato sui server che sono effettivamente accessibili dagli utenti.
È facile comprendere che si tratta di un ramo importante, che non dovrà contenere modifiche fatte a metà, ma solo cose definitive.
Mentre gli utenti hanno accesso a questa versione dell'applicazione, gli sviluppatori devono poter lavorare a delle modifiche (bugfix = correzione di bug / feature = nuove funzionalità) ma queste modifiche possono richiedere giorni, lo sviluppatore può iniziare con un'idea e poi rendersi conto di aver commesso degli errori, ripararli e così via.
Solo quando sarà soddisfatto caricherà le modifiche anche nel ramo principale.

Vediamo come si fa in pratica.

Creare un nuovo ramo

Nella barra di stato compare il nome del ramo sul quale stai attualmente lavorando (main):

Premi su main e scegli "Create new branch":

Scegli per il nuovo ramo un nome che ti aiuti ad identificarlo. Per esempio supponiamo di voler lavorare a una nuova pagina dei contatti:

Fatto questo la barra di stato ti mostra che stai lavorando sul ramo "contatti":

e Code ti da la possibilità di pubblicare il ramo anche su GitHub:

Git Graph mostra questa situazione:
Si vede che il ramo contatti e il ramo main di fatto coincidono, perché il nuovo ramo discende da main ma non sono state fatte altre modifiche al momento.
Proviamo allora a creare questo nuovo file:

La situazione è questa:

E dopo un commit:

Passare a un altro ramo

Supponiamo di dover tornare al ramo main per sistemare una cosa urgente, mettendo per un po' da parte la nuova funzionalità dei contatti.
Per farlo clicchiamo col tasto destro su main nel pannello di Git Graph e scegliamo Checkout Branch:

La barra di stato mostra:

...e in explorer il nuovo file è scomparso:

Facciamo delle modifiche a README:

Procediamo quindi a un commit. La situazione è questa:

Graph mostra che main è avanzato di un passo (Modifica urgente a Readme) mentre contatti è rimasto dove lo avevamo lasciato.

Proseguire il lavoro sulla nuova feature

Proviamo a tornare con un checkout a contatti, modifichiamolo ancora e facciamo un ulteriore commit:

Nota che i colori sono cambiati: il ramo sul quale stai lavorando è azzurro, mentre main è segnato in fucsia.

Incorporare le modifiche in main

Ora che abbiamo terminato lo sviluppo della nuova feature contatti, vogliamo incorporarla nel ramo principale, in modo che possa essere messa in produzione.
Per prima cosa facciamo un checkout del ramo main:

A questo punto, su Graph, clicchiamo col tasto destro sul commit della versione definitiva dei contatti e scegliamo "Merge into current branch"(unisci al ramo corrente):

Alla richiesta di conferma procediamo creando anche un nuovo commit:

La situazione finale è questa: appare chiaro che le modifiche del ramo contatti sono state incorporate nel ramo principale:

Un po' di pulizia

A questo punto il ramo contatti non ci serve più, e se vogliamo possiamo anche eliminarlo cliccando col tasto destro e scegliendo Delete Branch:

Alla richiesta di conferma possiamo scegliere di eliminare il ramo anche dal repository remoto (GitHub):

Tutti i commit fatti rimangono a tua disposizione, nel caso dovessi andare a cercare delle modifiche fatte:

Il ramo contatti però non esiste più, così se un giorno volessi nuovamente lavorare sui contatti e riaprire un branch con lo stesso nome potresti farlo.