Git rebase: riassegnare i commit in cima a un altro branch
Git rebase integra le modifiche di un branch in un altro. Questo comando Git offre più opzioni rispetto a git merge, ma dovrebbe essere usato con cautela.
- Certificato SSL Wildcard incluso
- Registrazione di dominio sicura
- Indirizzo e-mail professionale da 2 GB
Cos’è git rebase?
Una caratteristica essenziale del lavoro con Git è la possibilità di lavorare in team o da soli contemporaneamente su diverse parti di un progetto, apportando modifiche, lavorando alla risoluzione dei problemi e mettendo infine il lavoro svolto a livello locale nuovamente a disposizione di tutti gli altri membri. Questo funziona da un lato grazie all’uso di repository locali e dall’altro, uno scalino più in basso, grazie all’impiego di ramificazioni, anche chiamate branch. In questo modo potete apportare modifiche in modo autonomo, senza andare a influire sul resto del progetto. Se però volete integrare le modifiche eseguite su un branch in un altro branch, il sistema di controllo di versione vi offre due opzioni.
Git merge e git rebase sono entrambi utili per unire diversi elementi, ma presentano anche delle chiare differenze. Fra le due opzioni, git rebase è considerato la soluzione più elaborata. Questo comando Git serve a spostare una sequenza di commit in un nuovo commit di base. In questo modo un intero branch viene spostato in cima a un altro branch, modificando la base del commit. In altre parole, git rebase riscrive anche la cronologia del progetto, poiché vengono creati nuovi commit per ogni commit del branch originale. In questo contesto si distingue fra approccio manuale e interattivo.
Sintassi e funzionamento di git rebase
Per poter comprendere come funziona realmente git rebase, può essere utile dare un’occhiata alla sintassi del comando, che è relativamente intuitiva. Nel seguente esempio ci spostiamo sul branch “nuovo” con git checkout, un comando che potete trovare anche nella nostra pratica guida “Git Cheat Sheet” scaricabile in PDF. Successivamente integriamo il branch “nuovo” nel master tramite git rebase. A questo scopo basta usare il relativo comando, nel quale non dobbiamo fare altro che specificare il branch di destinazione. Questo il codice:
git checkout nuovo
git rebase master
In questo modo il branch “nuovo” viene riassegnato in cima al branch master e la cronologia del progetto viene riscritta.
Usare git rebase in modalità interattiva
L’esempio illustra l’uso standard di git rebase: il comando viene eseguito automaticamente nel branch selezionato e applicato al branch HEAD (in questo caso “master”). Tutti i commit vengono spostati e assegnati in cima al nuovo branch. La variante interattiva di git rebase offre ulteriori opzioni utili, consentendovi di selezionare, modificare, spostare o anche cancellare singoli commit. Questa opzione è utile se volete riordinare e in alcuni casi ottimizzare la cronologia come ritenete più opportuno. Il relativo comando è quasi uguale alla versione standard, con l’aggiunta di “-i”:
git checkout nuovo
git rebase -i master
Quando eseguite questo comando, si apre automaticamente un editor in cui viene visualizzata la lista di tutti i commit, che potrete modificare a vostro piacere.
Altre opzioni
Per chi ha già una certa esperienza, git rebase offre ulteriori opzioni utili. Queste le più importanti:
git rebase -d | Cancella il commit durante la riproduzione del blocco di commit definitivo. |
---|---|
git rebase -p | Serve a mantenere il commit invariato nel branch di origine. |
git rebase -x | Esegue uno script shell per commit selezionati. |
Git rebase e git merge
Git rebase è simile sotto vari aspetti a git merge. Entrambi i comandi integrano le modifiche di un branch in un altro. Git merge non modifica i branch esistenti. Il vantaggio consiste nel fatto che l’intera cronologia resta invariata. In questo modo, tuttavia, si vengono a creare numerosi commit merge non necessari. Git rebase è una soluzione lineare che, grazie al suo approccio interattivo, offre numerose possibilità di adattamento, ma è considerata un’opzione per sviluppatori e sviluppatrici esperti.
Vantaggi e svantaggi di git rebase
Git rebase offre un grande vantaggio e un potenziale svantaggio. L’aspetto positivo di questo comando è che aiuta a mantenere la cronologia del vostro progetto pulita e chiara. Infatti, con git rebase questa risulta strutturata in modo lineare, senza alcuna biforcazione nel progetto. In questo modo la navigazione viene semplificata e il progetto si mantiene snello. Tuttavia, questa riduzione ha anche lo svantaggio di non poter risalire alla “reale” cronologia del progetto. Alcuni commit possono andare persi, il che, specialmente quando si lavora in un team di grandi dimensioni, può essere causa di conflitti quando si esegue un merge. Git rebase è pertanto un comando efficace e utile che però deve essere usato con cautela.
Questo significa soprattutto che git rebase non deve essere usato su branch pubblici. Ciò, infatti, causerebbe l’unione del branch principale al vostro branch locale, mentre i membri del team continuerebbero a lavorare su una versione completamente diversa. In questo modo sarebbe quindi difficile o addirittura impossibile unire nuovamente e sincronizzare tutte le singole sezioni.
Pubblicate il vostro progetto online con semplicità: grazie a Deploy Now di IONOS, effettuate il deployment del vostro sito web e app direttamente con GitHub. Approfittate di numerose funzionalità e testate sin da subito il vostro progetto iniziale.