Basi del Rebase
Scorri per mostrare il menu
Creazione di un commit sul branch main
Iniziare creando un commit direttamente nel branch remoto main modificando il file README.md nel repository remoto. Questo farà sì che il branch main e il branch feature/payment abbiano una storia dei commit divergente.
Ecco la riga aggiunta al file:
New feature will soon be integrated.
Ecco il relativo messaggio di commit:
Add information about new feature in README.md
Comprendere il Rebasing
Come menzionato nel capitolo precedente, una volta che il branch feature è stato revisionato e testato, può e dovrebbe essere unito al branch main. Finora abbiamo utilizzato solo il comando git merge per questo scopo. Tuttavia, un altro approccio consiste nell'utilizzare il comando git rebase.
Rebasing è il processo di spostamento o combinazione di una sequenza di commit su un nuovo base commit. Questo viene fatto riproducendo le modifiche da un branch su un altro branch, ottenendo così una cronologia dei commit lineare.
Quando creiamo un branch, Git tiene traccia dell'ultimo commit su entrambi i branch. Se solo un branch ha nuove modifiche, Git può avanzare rapidamente e applicare le modifiche. Tuttavia, se entrambi i branch hanno nuove modifiche, Git crea un nuovo commit di merge, risultando in un three-way merge.
Ecco come apparirebbe un three-way merge nel nostro caso, dove C4 era l'ultimo commit sul branch feature/payment prima del merge:
Tuttavia, le fusioni a tre vie possono complicare il debug a causa della storia divisa e non lineare. Con il rebase, cambiamo la base dei nostri commit e li riproduciamo sopra la nuova base, permettendo a Git di eseguire una fusione fast-forward e mantenere una storia lineare.
Ecco un'animazione che illustra come può essere eseguito il rebase nel nostro caso (gli identificatori dei commit non corrispondono a quelli reali):
Quando esegui un rebase di un branch, stai essenzialmente riscrivendo la sua cronologia. Questo significa che i vecchi commit vengono sostituiti da nuovi, che hanno identificatori diversi (hash sum) perché sono basati su snapshot differenti del codice. Come mostrato nell'animazione sopra, l'identificatore del commit sul branch feature/payment è cambiato dopo il rebase.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione