Git Rebase interattivo


Esempio

Questo esempio mira a descrivere come si può utilizzare git rebase in modalità interattiva. Ci si aspetta che si abbia una comprensione di base di cosa sia git rebase e cosa fa.

Il rebase interattivo viene avviato usando il seguente comando:

git rebase -i

L'opzione -i riferisce alla modalità interattiva . Utilizzando rebase interattivo, l'utente può modificare i messaggi di commit, nonché riordinare, dividere e / o commettere lo squash (combinarli in uno).

Dì che vuoi riorganizzare i tuoi ultimi tre commit. Per fare ciò puoi eseguire:

git rebase -i HEAD~3

Dopo aver eseguito le istruzioni di cui sopra, verrà aperto un file nel tuo editor di testo in cui sarai in grado di selezionare il modo in cui i tuoi commit saranno ridepositati. Ai fini di questo esempio, è sufficiente modificare l'ordine dei commit, salvare il file e chiudere l'editor. Ciò avvierà un rebase con l'ordine che hai applicato. Se controlli git log , vedrai il tuo commit nel nuovo ordine che hai specificato.

Risconto dei messaggi di commit

Ora, hai deciso che uno dei messaggi di commit è vago e vuoi che sia più descrittivo. Esaminiamo gli ultimi tre commit usando lo stesso comando.

git rebase -i HEAD~3

Invece di riorganizzare l'ordine, i commit verranno ridefiniti, questa volta cambieremo pick , il valore predefinito, per reword un commit in cui si desidera modificare il messaggio.

Quando chiudi l'editor, il rebase verrà avviato e si fermerà al messaggio di commit specifico che desideri riformulare. Questo ti permetterà di cambiare il messaggio di commit a seconda di quello che desideri. Dopo aver modificato il messaggio, basta chiudere l'editor per procedere.

Modifica del contenuto di un commit

Oltre a cambiare il messaggio di commit puoi anche adattare le modifiche fatte dal commit. Per farlo basta cambiare il pick per edit un commit. Git si fermerà quando arriverà a quel commit e fornirà le modifiche originali del commit nell'area di staging. Ora puoi adattare queste modifiche disattivandole o aggiungendo nuove modifiche.

Non appena l'area di staging contiene tutte le modifiche desiderate in quel commit, commetti le modifiche. Il vecchio messaggio di commit verrà mostrato e può essere adattato per riflettere il nuovo commit.

Divisione di un singolo commit in più

Supponiamo che tu abbia fatto un commit ma in un secondo momento abbia deciso che questo commit potrebbe essere diviso in due o più commit. Usando lo stesso comando di prima, sostituisci invece pick con edit e premi invio.

Ora, git si fermerà al commit che hai contrassegnato per la modifica e inserirà tutto il suo contenuto nell'area di staging. Da quel punto puoi eseguire git reset HEAD^ per posizionare il commit nella tua directory di lavoro. Quindi, puoi aggiungere e trasferire i tuoi file in una sequenza diversa, dividendo infine un singolo commit in n commit.

Schiacciare più commit in uno solo

Di 'che hai fatto un po' di lavoro e hai più commit che a tuo avviso potrebbero essere un singolo commit. Per questo puoi eseguire git rebase -i HEAD~3 , sostituendo 3 con una quantità appropriata di commit.

Questa volta sostituisci invece il pick con lo squash . Durante il rebase, il commit che hai indicato di essere schiacciato sarà schiacciato sopra il commit precedente; invece di trasformarli in un singolo commit.