Git è uno strumento utilissimo per gestire i rami di sviluppo a basso livello, ma è compito del progettista decidere quanti e quali rami deve avere un progetto. Per fortuna esistono delle linee guida per il progettista e uno strumento di livello più alto (da installare), di nome git-flow.
Questa immagine è utile per spiegare alcuni esempi:
Rami suggeriti:
- main (o master) il ramo pronto per il rilascio in produzione
- release, ramo parallelo al main, il suo commit (8) (9) precede il rilascio nel ramo main (per correggere e per aggiungere metadati)
- develop, ramo del codice instabile, creato (4) (5) per evitare di modificare direttamente il codice nel ramo main
- feature che sono diversi rami di nome
feature/*
diversi per ogni nuova feature (6) (7) - hotfix, rami di nome
hotfix/*
a vita breve, per le correzioni di emergenza al ramo main, passando per il ramo develop (1) (2) (3)
Comando per inizializzare il progetto
apt install git-flow
git clone ...<URL>
git flow init
Produce questo output guidato
Which branch should be used for bringing forth production releases? - main Branch name for production releases: [main] Branch name for "next release" development: [develop] How to name your supporting branch prefixes? Feature branches? [feature/] Bugfix branches? [bugfix/] Release branches? [release/] Hotfix branches? [hotfix/] Support branches? [support/] Version tag prefix? [] Hooks and filters directory? [/home/utente/git/progetto/.git/hooks]
A questo punto sono stati creati automaticamente i seguenti rami:
- main
- develop
Prossimi passi:
- Per creare un ramo hotfix/nome dal ramo main (ad esempio, se l’attuale release si chiama 1.3.3 il nuovo nome sarà 1.3.4)
- ATTENZIONE: se nel frattempo è cambiato il ramo main, devi aggiornare con pull e cambiare nome al ramo hotfix
- Per chiudere un ramo hotfix/nome nel main, nel develop, aggiunge un tag
git flow hotfix start nome
git flow hotfix finish nome
- Per creare un ramo release/nome dal ramo develop
- Per chiudere il ramo release/nome nel main, nel develop, aggiunge un tag
git flow release start nome 1.4.0
git flow release finish nome
per creare e chiudere il ramo feature/nome dal ramo develop
git flow feature start nome
git flow feature finish nome
Alcuni di questi rami possono essere pubblicati, ma non è obbligatorio:
git flow feature publish nome