Sobes.tech
Middle

Quali modelli di lavoro con Git hai utilizzato?

sobes.tech AI

Risposta dell'AI

  • Git-flow: Utilizzato per progetti con un ciclo di rilascio chiaramente definito. Utile per gestire il fissaggio delle funzionalità, correzioni di bug e preparazione dei rilasci. Crea rami feature, develop, release, hotfix, master.

  • GitHub flow: Applicato in progetti dove la priorità è data a rilasci frequenti e di piccole dimensioni. Modello semplice basato su un ramo principale (main o master) e rami per ogni funzionalità o correzione, che vengono fusi immediatamente nel ramo principale dopo revisione.

  • Sviluppo basato su trunk: Praticato in progetti che richiedono alta frequenza di integrazione e distribuzione continua. Gli sviluppatori apportano modifiche direttamente nel ramo principale (trunk) o in rami di breve durata, che vengono rapidamente fusi indietro. Elemento chiave — Feature Toggles.

Oltre a questi modelli principali, è stato utilizzato:

  • Rebase vs Merge: A seconda della situazione e degli accordi nel team, si è usato git rebase per mantenere una storia pulita nei rami locali prima del merge, e git merge --no-ff per conservare una storia di merge esplicita nel ramo principale.

    # Esempio rebase
    git checkout feature/nuova-funzionalità
    git pull --rebase origin main 
    # Risoluzione dei conflitti, se presenti
    git push -f origin feature/nuova-funzionalità 
    # O richiesta di pull per il merge in main
    
    # Esempio merge --no-ff
    git checkout main
    git merge --no-ff feature/nuova-funzionalità -m "Merge di feature/nuova-funzionalità in main"
    git push origin main
    
  • Squash and Merge: Spesso applicato durante la fusione di rami di funzionalità nel ramo principale tramite Pull Request. Permette di unire più commit di un ramo di funzionalità in un unico commit pulito nel ramo principale.

    # Esempio di squash merge tramite l'interfaccia della piattaforma Git (GitHub, GitLab)
    # Generalmente eseguito al momento della conferma del Pull Request.
    
  • Cherry-picking: Utilizzato per trasferire commit specifici tra rami, ad esempio per il backport di correzioni dal ramo principale al ramo di rilascio o staging.

    # Esempio cherry-pick
    git checkout release/v1.2
    git cherry-pick <commit_hash>