Una volta che il ramo develop ha accumulato, tramite unioni (merge), abbastanza feature, siamo pronti per approcciare una nuova release del progetto. Per farlo, creiamo un ramo (branch) a partire da develop. Su questo nuovo ramo, che per prassi avrà un nome del tipo release/1.2, non dovremmo scrivere nuove integrazioni, ma limitarci a quei piccoli compiti che porta dietro ogni release, come fixare gli ultimi bug, aggiungere documentazione, pulire o aggiungere commenti, etc.

Quando il ramo è pronto, dovremmo unirlo nel ramo master e poi nuovamente nel ramo develop.

Utilizzare questo approccio permette agli sviluppatori di lavorare e finalizzare una release mentre è possibile ancora lavorare parallelamente su altre funzioni (cioè su altri rami feature/*) che non sono state ancora rilasciate. Inoltre, utilizzando una struttura dei nomi formale e condivisa, si può capire subito, a colpo d’occhio, lo stato attuale del progetto.

Non ci rimane poi che aggiungere un tag al merge (ovvero al commit risultante dall’unione) tra master e release/1.2 con appunto il numero di versione 1.2.

Vediamo come creare un branch di release con i comuni comandi  git:

Se volessimo farlo con git-flow:

Come dicevamo, a questo punto ci troviamo sul nuovo ram e possiamo andare ad eseguire bugfix e altre operazioni per prepararci al rilascio di questa versione. Una volta pronti, faremo il merge di questo ramo in master, poi in develop e poi potremmo semplicemente cancellarlo. Il motivo dell’unione in develop è semplice: ipotizzando di aver fixato qualche bug critico, l’avremmo fixato anche nelle altre (future) versioni.

Per finalizzarlo, ovvero rilasciare una nuova versione del nostro progetto, lo uniremo in master, poi in develop:

Con i comandi git:

Con l’estensione git-flow tutto si riassume in un unico comando: