Sviluppo Software

Git workflow per team di sviluppo

Strategie e workflow Git per migliorare la collaborazione nei team di sviluppo.

Git Workflow per Team di Sviluppo

Un Git workflow ben definito e' la differenza tra un team che collabora in modo fluido e uno che passa ore a risolvere conflitti e regressioni. In questa guida vediamo le strategie piu' efficaci per team di tutte le dimensioni.

I Principali Workflow Git

1. Git Flow (per release cicliche)

Il workflow piu' strutturato, ideale per software con versioni numerate:

  • main — Solo codice in produzione, tag per ogni release
  • develop — Branch di integrazione, sempre stabile
  • feature/* — Una branch per ogni feature
  • release/* — Preparazione della release (bug fix, versioning)
  • hotfix/* — Fix urgenti direttamente da main
# Inizia una nuova feature
git checkout develop
git checkout -b feature/user-authentication

# Completa la feature e fai il merge
git checkout develop
git merge --no-ff feature/user-authentication
git branch -d feature/user-authentication

2. GitHub Flow (per deploy continuo)

Piu' semplice, ideale per applicazioni web con deploy frequenti:

# Solo due regole:
# 1. main e' sempre deployabile
# 2. Tutto il lavoro avviene in branch descrittive

git checkout -b add-user-avatar-upload
# ... lavoro, commit ...
git push origin add-user-avatar-upload
# Apri Pull Request -> Review -> Merge -> Deploy

3. Trunk-Based Development

I team piu' veloci usano branch di vita brevissima (max 1-2 giorni) o direttamente commit su main con feature flags:

# Branch vivono max 24-48 ore
git checkout -b fix-login-redirect
# ... fix rapido ...
git push origin fix-login-redirect
# PR immediata, review, merge

Commit Convention: Conventional Commits

Messaggi di commit strutturati migliorano la leggibilita' della storia e permettono la generazione automatica del CHANGELOG:

<tipo>(<scope>): <descrizione breve>

[corpo opzionale]

[footer opzionale]

Tipi comuni:

feat(auth): aggiungi login con Google OAuth
fix(cart): correggi calcolo totale con coupon cumulati
docs(api): aggiorna documentazione endpoint /orders
refactor(models): estrai logica pricing in ValueObject
test(payments): aggiungi test per rimborsi parziali
chore(deps): aggiorna Laravel a 13.x
perf(images): ottimizza lazy loading hero section

Pull Request Best Practices

Una buona PR accelera i review e riduce i bug:

Dimensione: Le PR dovrebbero essere piccole — idealmente meno di 400 righe modificate. PR enormi bloccano il team e vengono approvate senza vera attenzione.

Descrizione:

## Cosa fa questa PR
Aggiunge il login con Google OAuth tramite Laravel Socialite.

## Come testarlo
1. Clona il branch e avvia i container Docker
2. Vai su `/login` e clicca "Accedi con Google"
3. Completa il flusso OAuth con un account Google di test

## Breaking changes
- Aggiunta colonna `google_id` alla tabella `users` (migration inclusa)

## Screenshot
[screenshot dell interface]

Protezione del Branch Main

Configura queste protezioni su GitHub/GitLab:

  • Require pull request reviews — Minimo 1-2 approvazioni
  • Require status checks — CI deve passare prima del merge
  • Require linear history — Forza squash o rebase merge
  • Restrict pushes — Solo merge via PR, no push diretti

Alias Git Utili

Velocizza il workflow quotidiano:

# ~/.gitconfig
[alias]
  st = status
  co = checkout
  br = branch
  lg = log --oneline --graph --decorate --all
  undo = reset HEAD~1 --mixed
  save = !git add -A && git commit -m 'WIP: checkpoint'
  sync = !git fetch origin && git rebase origin/main

Gestione dei Conflitti

I conflitti fanno paura, ma con la strategia giusta sono gestibili:

# Mantieni la tua branch aggiornata spesso
git fetch origin
git rebase origin/main  # Preferibile a merge per storia lineare

# In caso di conflitto
git status  # Vedi i file in conflitto
# Risolvi manualmente, poi:
git add .
git rebase --continue

# Se la situazione e' disperata
git rebase --abort  # Torna allo stato precedente

Conclusioni

Non esiste il workflow perfetto: il migliore e' quello che il tuo team segue in modo consistente. Inizia con qualcosa di semplice (GitHub Flow), documenta le convenzioni in un file CONTRIBUTING.md nel repository e miglioralo iterativamente.

La disciplina Git e' un investimento: ogni minuto speso a imparare il workflow ti salva ore di debug sulla storia del codice.

Tag

Condividi

Articoli correlati