Tutorial Git - Rebase

  1. Cos’è il git rebase?
  2. Flusso di lavoro di Rebase
  3. Regola d’oro della ribasatura

Abbiamo parlato di fusioni di base come

  • Fusione rapida

  • Fusione a tre vie (ricorsiva)

In questo tutorial, introdurremo una delle caratteristiche più importanti del git - rebasing.

Cos’è il git rebase?

Rebasing significa che si sta cambiando il root commit dei rami in base al, o in altre parole, si sta reimpostando il base commit al recente commit del ramo che si sta progettando di fondere, come il ramo master.

Vediamo come appare,

Ramo Git Feature

In questo diagramma abbiamo i rami master e Feature e mentre lavoravamo sul nostro ramo Feature, altri membri del team hanno continuato a lavorare sul master.

Vogliamo eseguire il rebase del nostro ramo prima di fonderlo di nuovo in master e quando eseguiamo il comando di rebase, questo cambia il commit su cui si basa il nostro ramo di test invece di puntare a C3 piuttosto che a C1. Il grafico sottostante mostra cosa succede dopo il rebase.

Ramo di caratteristica Git

Quando uniamo i cambiamenti, deve solo fare una fusione veloce in avanti, perché i commit sono ora basati sull’ultimo commit del master. Questo è il motivo per cui il rebasing è una delle caratteristiche più potenti di git.

Dopo aver unito questo ramo della Feature rebased al master, il grafico del registro dei commit sarà come segue,

Grafico di registro Git dopo il ribasamento

Sembra che il ramo Feature non sia mai esistito e tutti i registri di commit sono in linea retta.

Flusso di lavoro di Rebase

  • Creare il ramo di funzionalità
    $ git checkout -b Feature
    
  • Apportare modifiche su questo ramo e impegnarsi
    $ git add modified.txt
    $ git commit -m 'coment here'
    
  • La funzione Rebase si dirama su master
    $ git rebase master
    
  • Unire il ramo della funzione rebased su master
    $ git checkout master
    $ git merge Feature
    

Regola d’oro della ribasatura

La regola d’oro è quella di non ribaltare mai un ramo che hai messo a disposizione del pubblico a causa della riscrittura della storia.

Se si esegue il rebase di un ramo pubblico e qualcuno lavora su quel ramo dopo aver eseguito il rebase, ottenere le nuove modifiche nel proprio ramo master sarà molto difficile perché gli altri sviluppatori lavorano ancora con il ramo master originale.