Git Rebase e Branch Commutazione

Rebase

Rebase è il processo di modifica della cronologia dei commit di un ramo applicando i commit di un altro ramo. Invece di utilizzare merge per combinare le modifiche, rebase consente di inserire insert nuovi commit nella cronologia dei commit del ramo corrente senza creare commit di unione.

Ad esempio, supponiamo di avere due rami: feature-branch e main. Ci stai lavorando feature-branch e vuoi applicare gli ultimi commit main dal tuo ramo attuale. Puoi usare rebase per raggiungere questo obiettivo:

git checkout feature-branch  
git rebase main  

Quando esegui questo comando, Git prenderà i commit da main e li applicherà a feature-branch. Ciò significa che tutti i commit su feature-branch appariranno dopo i commit da main. Il risultato è una cronologia dei commit più pulita e leggibile su feature-branch.

Tuttavia, quando si utilizza rebase, è importante notare che la modifica della cronologia dei commit può influire sui rami condivisi pubblicamente. Pertanto, se hai già eseguito il push dei commit dal ramo corrente a un repository remoto, in genere è consigliabile non utilizzare rebase su quel ramo per evitare conflitti e una cronologia dei commit disordinata.

 

Branch Commutazione

Il cambio di ramo in Git si riferisce al processo di spostamento da un ramo all'altro. Quando cambi ramo, Git sposta il puntatore HEAD sul nuovo ramo, permettendoti di lavorare su quel ramo e apportare modifiche senza influire sugli altri rami.

Ad esempio, supponiamo che tu abbia branch feature-branch e main. Per passare a feature-branch, dovresti usare il seguente comando:

git checkout feature-branch

Dopo aver cambiato ramo, puoi apportare modifiche nella directory di lavoro. Tutti i comandi commit, add e checkout si applicheranno al ramo corrente.

Ad esempio, se aggiungi un nuovo file e ne esegui il commit su feature-branch, solo quel ramo conterrà il commit, mentre main rimane inalterato. Ciò consente di sviluppare funzionalità separate, correggere bug o lavorare su diverse versioni del codice in modo indipendente. Puoi passare da un ramo all'altro quando necessario per lavorare separatamente su ogni ramo.