modulo 06 / lezione 27
Workflow di team
GitHub Flow e Pull Request workflow
Lavorare con branch per ogni cambiamento e PR come unità di review e merge.
GitHub Flow e Pull Request workflow
GitHub Flow è un workflow semplice: parti da main, crei un branch, fai commit, apri una pull request, passi review e CI, mergi, cancelli il branch.
È meno estremo del trunk-based puro e molto adatto a team web che rilasciano spesso.
Perché questa lezione conta
La pull request è più di un bottone per fare merge. È il contenitore di discussione, review, test, descrizione del cambiamento e decisione di integrazione.
Un team con PR sane ha meno sorprese: ogni modifica ha contesto, verifiche e responsabilità.
Obiettivo operativo
Alla fine della lezione devi saper eseguire un ciclo GitHub Flow completo e scrivere una checklist PR utile.
Il ciclo
main aggiornato
-> branch breve
-> commit atomici
-> push
-> PR
-> CI
-> review
-> merge
-> delete branch
Comandi:
git switch main
git pull --ff-only
git switch -c feat/profilo-utente
git push -u origin feat/profilo-utente
Poi PR su piattaforma.
Anatomia di una buona PR
Una PR dovrebbe rispondere a:
- cosa cambia;
- perché cambia;
- come è stato verificato;
- rischi o trade-off;
- screenshot o video se UI;
- issue collegata;
- follow-up non inclusi.
Template:
## Cosa
## Perché
## Verifiche
## Rischi
## Screenshot
Review
La review non è solo trovare bug. Deve controllare:
- correttezza;
- sicurezza;
- test;
- leggibilità;
- scope;
- coerenza con architettura;
- impatto su deploy.
Commenti utili distinguono bloccante da suggerimento.
Definition of ready e done
Una PR è pronta per review quando:
- il branch parte da una base ragionevolmente aggiornata;
- il diff è leggibile;
- la descrizione spiega il perché;
- i test locali minimi sono stati eseguiti;
- non contiene file generati o refactor non richiesti.
Una PR è pronta per merge quando:
- la CI è verde;
- i commenti bloccanti sono risolti;
- il comportamento è verificato;
- eventuali migrazioni o note deploy sono scritte;
- la strategia di merge scelta produce una storia comprensibile.
Queste due definizioni evitano PR aperte troppo presto e merge fatti per stanchezza.
Strategie di merge
GitHub Flow può usare:
- merge commit;
- squash merge;
- rebase merge.
Scegli una policy. Se il team usa squash, i commit interni alla PR possono essere più liberi. Se mantiene commit, ogni commit dovrebbe essere pulito.
Quando basta
GitHub Flow funziona bene se:
- c’è un branch principale;
- release frequenti;
- ambiente unico o pochi ambienti;
- PR piccole;
- CI affidabile;
- non devi supportare molte versioni in parallelo.
Se hai release pianificate e supporto multiplo, valuta release branch o GitFlow.
Laboratorio guidato
Su un repo sandbox:
- crea branch da main;
- fai due commit;
- apri PR;
- compila descrizione completa;
- simula review con commenti;
- aggiorna branch;
- merge con strategia scelta;
- cancella branch locale e remoto.
Output atteso
Checklist PR:
Branch parte da main aggiornato.
Diff sotto controllo.
Descrizione chiara.
Test indicati.
CI verde.
Review completata.
Merge strategy coerente.
Branch cancellato.
Errori comuni
PR enormi. Rendono review lenta e superficiale.
Descrizione vuota. Costringe il reviewer a dedurre tutto dal diff.
Review opzionale. Allora la PR diventa solo burocrazia.
Branch lasciati aperti. Creano rumore e confusione.
Checklist di verifica
- so aprire PR da branch aggiornato;
- so scrivere descrizione utile;
- so scegliere merge strategy;
- so cancellare branch dopo merge;
- il team distingue commenti bloccanti da suggerimenti.
Esercizi
Base · facile
Descrivi il ciclo del GitHub Flow per un cambiamento.
Soluzione
git switch -c feature/login # 1. branch da main
# 2. commit
git push -u origin feature/login # 3. push + apri PR
# 4. review → 5. merge in main → 6. deploy
GitHub Flow è semplice: main sempre deployabile, ogni lavoro su un branch con pull request, review, merge, deploy. Pochi passi, adatto a rilasci frequenti.
Intermedio · medio
Spiega il ruolo della pull request come punto di review e di CI, e cosa rappresenta main in questo flusso.
Soluzione
Pull Request = luogo dove:
- girano i test automatici (CI) sul branch
- avviene la code review
- si discute prima di toccare main
main = sempre rilasciabile: ci finisce solo codice rivisto e verde
La PR è il cancello di qualità: nessun codice entra in main senza passare test e review. Per questo main resta sempre in uno stato deployabile: è la differenza tra “funziona sul mio branch” e “è pronto per la produzione”.
Sfida · difficile
Confronta GitHub Flow con GitFlow indicando per quali contesti ciascuno è adatto.
Soluzione
GitHub Flow: main + branch di feature + PR. Deploy continuo.
Adatto a: web app, SaaS, rilasci frequenti, un'unica versione in produzione.
GitFlow: main + develop + feature/* + release/* + hotfix/*.
Adatto a: software con versioni multiple supportate, rilasci pianificati,
prodotti distribuiti (desktop, librerie con più release attive).
GitHub Flow è leggero e ottimizzato per chi rilascia spesso un’unica linea di prodotto. GitFlow aggiunge branch dedicati a integrazione e release: utile quando devi stabilizzare versioni e mantenere più release in parallelo, ma è sovrastruttura inutile (e dannosa) per chi fa deploy continuo.
Collegamenti
- Modulo: Workflow di team — lezione 27 del corso.
- GitFlow è il prossimo confronto per contesti più complessi.