Vai al contenuto
GitTree
Storia e recupero

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.

GratuitoAggiornato

Funziona in GitTree Gratuito: tutte le funzionalità Git locali, una volta effettuato l'accesso.

In questa pagina
  1. Prima di iniziare
  2. Dove trovarlo
  3. Passi
  4. Risultato atteso
  5. Cosa fa ciascuna azione
  6. Se qualcosa va storto
  7. Domande
  8. Relativo

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….
AzionemacOSWindows e Linux
Undo l'intero rebase⌘ZCtrl+Z

Passi

  1. 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.

    Animazione: si apre l'editor interattivo di rebase, un commit è impostato su Squash e un altro su Reword
    Ogni passaggio ha un'azione; qui un commit viene schiacciato in quello sopra e un altro riformulato.GitTree interfaccia con un repository dimostrativo.
  2. 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.

  3. 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.

  4. 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

Azioni di rebase interattive
AzioneRisultato
PickIl commit rimane così com'è.
RewordStesse modifiche, nuovo messaggio digitato nell'editor.
EditIl rebase si interrompe dopo questo commit in modo da poterlo modificare, quindi continuare dal banner.
SquashPiegato nel commit sopra; i messaggi sono combinati.
FixupPiegato nel commit sopra; il suo stesso messaggio viene scartato. Fixup, use its message conserva invece il messaggio di questo.
DropLasciato 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.