Modifica la cronologia con un rebase interattivo
Un rebase interattivo riscrive i commit sopra quello scelto: mantieni, riformula, modifica, schiaccia, correggi o rilascia ciascuno e trascinali in un nuovo ordine, come git rebase -i. Per una singola modifica, Edit History nel menu di un commit lo fa in un solo passaggio.
Funziona in GitTree Gratuito: tutte le funzionalità Git locali, una volta effettuato l'accesso.
In questa pagina
Prima di iniziare
- I commit da riscrivere si trovano sul ramo corrente, senza alcun commit di unione tra di loro.
- Preferisci i commit che non hai inviato: i commit riscritti ottengono nuovi ID.
Dove trovarlo
- Fai clic con il pulsante destro del mouse sul commit appena sotto quelli da modificare: Edit History › Interactive Rebase of the Commits Above….
- Modifiche in un solo passaggio nello stesso menu Edit History: Edit Commit Message…, Drop Commit…, Move Commit Up e Move Commit Down.
- Seleziona diversi commit, quindi fai clic con il pulsante destro del mouse: Squash Commits….
| Azione | macOS | Windows e Linux |
|---|---|---|
| Undo l'intero rebase | ⌘Z | Ctrl+Z |
Passi
Apri l'editor
Fai clic con il pulsante destro del mouse sul commit sotto quelli da modificare e scegli Edit History › Interactive Rebase of the Commits Above…. Il commit più vecchio è in alto, nell'ordine in cui vengono riprodotti.

Ogni passaggio ha un'azione; qui un commit viene schiacciato in quello sopra e un altro riformulato.GitTree interfaccia con un repository dimostrativo. Scegli un'azione per ogni commit
Imposta Action su ogni passaggio: Pick lo mantiene, Reword cambia il suo messaggio, Edit si ferma lì in modo da poterlo modificare, Squash e Fixup lo inseriscono nel commit sopra, Drop lo lascia fuori.
Riordina se necessario
Trascina un passaggio tramite la maniglia oppure selezionalo e premi Alt+↑ o Alt+↓. Anche le lettere funzionano: p, r, e, s, f e d impostano le azioni.
Inizia il rebase
Premi Start Rebase. Se alcuni commit sono già su un telecomando, conferma prima di riscriverli. GitTree dice Rebase finished. Undo can put the branch back.
Risultato atteso
Il ramo contiene i commit riscritti, con nuovi ID. Il vecchio ramo è mantenuto sotto refs/ogt/trash.
Cosa fa ciascuna azione
| Azione | Risultato |
|---|---|
| Pick | Il commit rimane così com'è. |
| Reword | Stesse modifiche, nuovo messaggio digitato nell'editor. |
| Edit | Il rebase si interrompe dopo questo commit in modo da poterlo modificare, quindi continuare dal banner. |
| Squash | Piegato nel commit sopra; i messaggi sono combinati. |
| Fixup | Piegato nel commit sopra; il suo stesso messaggio viene scartato. Fixup, use its message conserva invece il messaggio di questo. |
| Drop | Lasciato fuori dalla filiale. |
Se qualcosa va storto
"Questi commit includono una fusione, quindi possono essere mostrati solo qui, non riscritti."
Il rebase interattivo in GitTree riscrive solo la cronologia lineare. Inizia da un commit sopra l'unione.
"Passo... si schiaccia nel nulla: spostalo sotto un commit mantenuto."
Uno squash o una correzione necessita di un commit sopra di esso in cui ripiegare. Spostalo o modifica il primo passaggio in Seleziona.
Domande
Come posso trasformare diversi commit in uno solo?
Selezionali nel grafico e scegli Squash Commits…: la finestra di dialogo Squash mostra prima il risultato, il messaggio e i coautori. Oppure imposta ogni commit dopo il primo su Squash o Fixup nell'editor.