L’opzione rebase in Git


Lezione 53 / 53

L’opzione rebase in Git

Di Luca Ferretti


git guida git guida git italiano

Scegliendo l’opzione rebase in Git per riportare e modifiche di main su feature, l’intero branch feature viene “spostato”, ricreando i singoli commit che ne facevano parte.

git checkout feature
git rebase main

 

Opzione Rebase

Opzione Rebase

 

Il vantaggio dell’opzione rebase in Git è proprio la possibilità di ottenere una history di progetto più chiara. Non esiste più il commit di merge e la storia del progetto risulta più ordinata (dal punto di vista di cosa è entrato a far parte del branch principale).

Ci sono, però, due compromessi da tenere in considerazione:

  • con il rebase non è più possibile sapere quando le modifiche del branch principale sono state riportate nel branch feature
  • se non si segue la regola d’oro del rebase, bisogna essere pronti a gestire problemi di collaborazione tra web developers
     

La regola d’oro del rebase in Git

Mai fare rebase su un branch pubblico

Per capire meglio il perché di questa regola d’oro, supponiamo che per incorporare le modifiche presenti nei due branch avessimo optato per fare rebase del branch main sul branch feature. Avremmo ottenuto la seguente situazione:

 

Opzione Rebase

Opzione Rebase

 

Il rebase sposta tutti i commit precedentemente in main sulla punta di feature, creando nuovi commit. Ma ciò accade solo sul proprio repository locale. Dal momento che il rebase si traduce in commit nuovi di zecca, Git penserà che la cronologia del proprio ramo main si sia discostata da quello repository remoto e non sarà possibile fare push, se non usando l’opzione --force.

Scegliendo di fare push con force, potremmo effettivamente riallineare il nostro repository locale e quello remoto, ma tutti gli altri collaboratori avranno ancora il branch main originale e non sarà loro possibile aggiornare in modo semplice i propri repository.

Ovviamente, come tutte le regole d’oro, ci sono situazioni in cui è necessario doverla infrangere. Tutto dipende ovviamente dal progetto, dal team e dalla necessità. È possibile, infatti, accordarsi sul riscrivere la history di un feature branch pubblicato sul repository remoto prima di farne il merge il branch principale (per esempio perché il merge presenta dei conflitti e si vuole risolvere tali conflitti cambiando direttamente i commit nel branch che vanno in conflitto) e verificare se la risoluzione, effettivamente, lascia tutto funzionante.

L’importante è sapere cosa si sta facendo e su chi, eventualmente, la cosa ha impatto.

Successivo

54
Guida Git in italiano 1 Che cos'è Git? 2 Nascita di Git 3 Principali caratteristiche di Git 4 Riga di comando e UI in Git 5 Come Installare Git 6 5 comandi Git per sviluppatori singoli 7 5 comandi Git per sviluppare collaborando 8 Repository in Git 9 Commit in Git 10 Working Copy in Git 11 Staging Area in Git 12 Branch in Git 13 Remote in Git 14 Inizializzare un nuovo repository con git init 15 Creare una copia di un repository remoto in Git con git clone 16 Configurare le opzioni di Git con git config 17 Il comando Git add in Git 18 Il comando Git commit in Git 19 Il comando Git diff in Git 20 Il comando Git stash in Git 21 .gitignore : i file ignored in Git 22 Il comando Git status in Git 23 il comando Git log in Git 24 Il comando Git tag in Git 25 Il comando Git blame in Git 26 Il comando Git checkout in Git 27 Il comando Git revert in Git 28 Il comando Git reset in Git 29 Il comando Git rm in Git 30 L'opzione Git commit –amend in Git 31 Git rebase –interactive in Git 32 Scorciatoie per comandi frequenti in Git 33 Repository condiviso in Git 34 Il modello Fork & pull 35 Il comando Git remote in Git 36 I principali repository remote di Git: Github, Gitlab e Bitbucket 37 Il comando Git fetch in Git 38 Il comando Git push in Git 39 Il comando Git pull in Git 40 Il comando Git branch in Git 41 Il comando Git checkout in Git 42 Il comando Git merge in Git 43 Risolvere un merge conflict in Git 44 Capire meglio il contenuto dei commit durante un conflitto di merge in Git 45 Workflow Git centralizzato 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Approccio “forking” in Git 49 Gitflow in Git 50 Messaggi di commit in Git 51 Tagging & Versioning in Git 52 L’opzione merge in Git 53 L’opzione rebase in Git
Scopri i corsi

Le nostre guide possono essere molto utili per muovere i primi passi nel mondo della programmazione, ma se vuoi iniziare una nuova carriera in ambito digital & tech con il supporto costante dei docenti e tantissime esercitazioni pratiche, ti consigliamo di frequentare uno dei corsi della nostra Hackademy!

Scopri i corsi