git rebase
Riapplica i commit correnti sopra la punta di un altro branch creando una cronologia lineare.
ATTENZIONE: Comando Critico / Distruttivo
Non eseguire mai il rebase su rami pubblici o condivisi già pubblicati su origin, poiché riscrive gli hash SHA dei commit.
>_git rebase [OPZIONI] [___TKN_ARG_0___] [___TKN_ARG_1___]
#git
#history
#rebase
#squash
Descrizione & Funzionamento
Fondamentale per mantenere una storia pulita ed eliminare i commit di merge inutili. In modalità interattiva (`-i`) permette di unire (squash), modificare, riordinare o eliminare singoli commit.
Parametri, Flag & Opzioni (4)
Riferimento CLI| Flag / Opzione | Formato / Default | Descrizione | Esempio Rapido |
|---|---|---|---|
-i o --interactive |
N/D | Avvia la sessione interattiva per modificare, accorpare (squash) o eliminare commit. |
git rebase -i HEAD~4
|
--onto |
<NUOVO_BASE> <VECCHIO_BASE>
|
Trapianta una serie di commit su una base completamente nuova. |
git rebase --onto main feat-old feat-new
|
--abort |
N/D | Interrompe l'operazione di rebase e ripristina il branch allo stato precedente. |
git rebase --abort
|
--continue |
N/D | Prosegue il rebase dopo aver risolto i conflitti e aggiunto i file modificati. |
git rebase --continue
|
Esempi d'Uso Pratico (1)
#1 Squash degli ultimi 3 commit in un unico commit pulito
Pulizia cronologia PR
Terminale
$
git rebase -i HEAD~3
Apre l'editor di testo dove è possibile sostituire `pick` con `squash` (o `s`) per accorpare i commit prima di aprire una Pull Request.
Output Atteso:
pick e4a1b2c Aggiunta funzionalità login squash 7b8c9d0 Fix typo nel controller squash 1a2b3c4 Aggiornamento test unitari