Menu
Coddy logo textTech

Git Rebase

Ultimo aggiornamento

git rebase sposta i commit del tuo branch in modo che vengano riapplicati sopra un altro branch, producendo una cronologia dritta e lineare invece di un commit di merge. Il rebase interattivo (-i) va oltre e ti permette di fare squash, riordinare, modificare o eliminare commit. Siccome il rebase riscrive i commit, usalo solo su lavoro che non hai ancora condiviso.

Prova questi comandi nel terminal playground: una vera shell nel tuo browser, senza installare nulla.

git rebase riapplica i commit del tuo branch sopra main come nuove copie, lasciando una cronologia dritta e lineare.

Sintassi

ComandoCosa fa
git rebase mainRiapplica i tuoi commit sopra main
git rebase -i HEAD~3Modifica in modo interattivo gli ultimi 3 commit
git rebase --onto main old newSposta un intervallo di commit su main
git rebase --continueRiprende dopo aver risolto i conflitti
git rebase --abortAnnulla il rebase e ripristina il branch
git pull --rebasePull con rebase invece del merge

Parole chiave del rebase interattivo

Nell'editor che si apre con -i, sostituisci pick con una di queste.

Parola chiaveCosa fa
pickMantiene il commit
rewordMantiene il commit, ne modifica il messaggio
squashLo fonde nel commit precedente, unendo i messaggi
fixupLo fonde, scartando questo messaggio
dropRimuove del tutto il commit

Domande frequenti su git rebase

Cosa fa git rebase?
Prende i commit del branch corrente e li riapplica uno alla volta sopra un altro branch, come se avessi iniziato il lavoro dall'ultimo commit di quel branch. Il risultato è una cronologia lineare senza commit di merge. Nel processo i commit vengono riscritti (ricevono nuovi hash).
Cos'è il rebase interattivo?
git rebase -i <base> apre un editor con l'elenco dei commit successivi a <base>, dove puoi riordinarli, unirne diversi in uno con squash, cambiare i messaggi con reword, modificare un commit con edit o eliminarlo con drop. È lo strumento principale per ripulire una serie disordinata di commit prima di condividerli.
Qual è la regola d'oro del rebase?
Non fare mai il rebase di commit su cui altri hanno già basato il proprio lavoro, cioè in genere tutto ciò che è stato inviato su un branch condiviso. Siccome il rebase riscrive i commit, costringeresti tutti gli altri a riconciliare una cronologia divergente. Usa pure il rebase sui commit locali non ancora inviati; per quelli pubblici usa merge o revert.
Come sistemo o annullo un rebase con conflitti?
Quando un rebase si ferma su un conflitto, risolvi i file, esegui git add su di essi, poi git rebase --continue. Usa git rebase --skip per scartare il commit corrente, oppure git rebase --abort per annullare tutto e riportare il branch com'era prima dell'inizio del rebase.
Posso esercitarmi online?
Sì. Apri il terminal playground per eseguire git rebase in una vera shell nel tuo browser, senza installare nulla. Il corso interattivo gratuito di Git di Coddy spiega anche il rebase passo dopo passo.
Illustrazione dei linguaggi di programmazione di Coddy

Impara Git con Coddy

INIZIA