Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Basi del Rebase | Workflow Più Avanzati
Fondamenti di GitHub
course content

Contenuti del Corso

Fondamenti di GitHub

Fondamenti di GitHub

1. Introduzione a GitHub
2. Interazione di Base con i Remoti
3. Workflow Più Avanzati

book
Basi del Rebase

Creazione di un Commit sul Branch main

Iniziamo 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:

Ecco il relativo messaggio di commit:

Comprendere il Rebasing

Come menzionato nel capitolo precedente, una volta che il branch feature è stato revisionato e testato, può e dovrebbe essere integrato nel branch main. Fino ad ora, abbiamo utilizzato solo il comando git merge a questo scopo. Tuttavia, un altro approccio consiste nell'utilizzare il comando git rebase.

Note
Approfondisci

Rebasing è il processo di spostamento o combinazione di una sequenza di commit su un nuovo commit di base. 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 presenta 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 ramificata e non lineare. Tramite 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 qui non corrispondono a quelli reali):

Note
Nota

Quando esegui il rebase di un branch, in pratica riscrivi la sua storia. Questo significa che i vecchi commit vengono sostituiti da nuovi, che hanno identificatori diversi (hash sum) perché si basano su snapshot differenti del codice. Come mostrato nell'animazione sopra, l'identificatore del commit sul branch feature/payment è cambiato dopo il rebase.

question mark

Qual è lo scopo principale dell'utilizzo di git rebase invece di git merge?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Fondamenti di GitHub

Fondamenti di GitHub

1. Introduzione a GitHub
2. Interazione di Base con i Remoti
3. Workflow Più Avanzati

book
Basi del Rebase

Creazione di un Commit sul Branch main

Iniziamo 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:

Ecco il relativo messaggio di commit:

Comprendere il Rebasing

Come menzionato nel capitolo precedente, una volta che il branch feature è stato revisionato e testato, può e dovrebbe essere integrato nel branch main. Fino ad ora, abbiamo utilizzato solo il comando git merge a questo scopo. Tuttavia, un altro approccio consiste nell'utilizzare il comando git rebase.

Note
Approfondisci

Rebasing è il processo di spostamento o combinazione di una sequenza di commit su un nuovo commit di base. 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 presenta 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 ramificata e non lineare. Tramite 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 qui non corrispondono a quelli reali):

Note
Nota

Quando esegui il rebase di un branch, in pratica riscrivi la sua storia. Questo significa che i vecchi commit vengono sostituiti da nuovi, che hanno identificatori diversi (hash sum) perché si basano su snapshot differenti del codice. Come mostrato nell'animazione sopra, l'identificatore del commit sul branch feature/payment è cambiato dopo il rebase.

question mark

Qual è lo scopo principale dell'utilizzo di git rebase invece di git merge?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 4
some-alt