Vai al contenuto
GitTree
Storia e recupero

Squash si impegna

Lo schiacciamento combina diversi commit in uno solo, come fixup o squash in git rebase -i. In GitTree ogni squash apre prima la finestra di dialogo Squash: mostra i commit che si piegano, il risultato, il messaggio e chi ottiene il credito, e non cambia nulla finché non confermi. Il tuo lavoro non impegnato non viene mai toccato e Undo ripristina i commit.

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. Modi per schiacciare
  6. Ti impegna già
  7. La correzione si impegna per dopo
  8. Le fusioni di squash mantengono i loro autori
  9. Impostazioni
  10. Se qualcosa va storto
  11. Domande
  12. Relativo

Prima di iniziare

  • I commit sono sul ramo che hai estratto, in una riga ininterrotta. Una selezione non può contenere un commit di unione; Squash Branch… può.
  • I commit schiacciati e ogni commit sopra di essi ottengono nuovi ID. Se li hai già spinti, avrai bisogno di una spinta forzata in seguito; la cronologia contenuta in un altro ramo remoto non può essere compressa qui.

Dove trovarlo

  • Seleziona due o più commit nel grafico (fai clic tenendo premuto il tasto Maiusc per un intervallo), fai clic con il pulsante destro del mouse: Squash Commits….
  • Fai clic con il pulsante destro del mouse su un commit: Edit History › Squash into Parent… o Fixup into Parent….
  • Fai clic con il pulsante destro del mouse sul ramo estratto nel grafico o nel pannello di sinistra: Squash Branch….
  • Tieni premuto Alt (⌥ su Mac) e trascina un commit sul commit proprio sopra o sotto di esso.
  • Fare clic con il pulsante destro del mouse su un commit: Edit History › Create Fixup Commit… per eseguire il commit di ciò che è stato organizzato come correzione.
  • Ognuno di questi è anche nella tavolozza dei comandi e nella scheda Squash della Guida alle funzionalità.
AzionemacOSWindows e Linux
Squash Commits… sulla selezione⌥SAlt+S
Squash into Parent… per il commit selezionato⌥QAlt+Q
Squash Branch… per la filiale in check-out⌥⇧BAlt+Shift+B
Undo la zucca⌘ZCtrl+Z

Passi

  1. Apri la finestra di dialogo Squash

    Utilizza qualsiasi voce sopra. La finestra di dialogo prende il nome da ciò che schiacci, ad esempio Squash 3 Commits, Squash a1b2c3d into Its Parent o Squash Branch feature/login. La sua riga di riepilogo recita come "3 commit diventano 1 · 12 file · +240 −31 · mantiene la paternità di Ada".

  2. Controlla i commit che si piegano

    Commits that fold li elenca prima sotto Result: un commit scritto dall'autore del più vecchio. Per Squash Branch…, Base: mostra dove il ramo ha lasciato la sua base; Change… ti consente di digitare un altro ramo, tag o commit e il piano viene creato nuovamente.

  3. Scegli il messaggio

    Sotto Start the message from, scegli Combine Messages, Oldest Message, Newest Message, List of Commits o Write My Own, quindi modifica il testo come preferisci. È necessaria una riga di riepilogo.

  4. Mantieni accreditati gli altri autori

    Quando altre persone hanno scritto alcuni commit, Credit the other authors (Co-authored-by) aggiunge una riga Co-authored-by per ciascuno di essi. Le righe aggiunte sono elencate sotto; deselezionalo per lasciarli fuori.

  5. Leggi cos'altro cambia, poi schiaccia

    What else changes dice quanti commit sopra ottengono nuovi ID (le loro modifiche rimangono le stesse) e quali altri rami o tag mantengono i vecchi commit. Premi il pulsante di conferma, ad esempio Squash 3 Commits o Squash into Parent.

Risultato atteso

GitTree dice, ad esempio, 3 commits squashed into a1b2c3d. con un pulsante Undo e il grafico mostra un commit dove ce n'erano diversi.

Le modifiche organizzate e non organizzate e i file non tracciati sono esattamente come erano: lo squash non tocca mai l'albero di lavoro.

Modi per schiacciare

Ciò che ogni zucca piega
ComandoCosa si piega
Squash Commits…I commit selezionati, due o più uno accanto all'altro nel ramo estratto.
Squash into Parent…Un commit nel commit sottostante.
Fixup into Parent…Lo stesso, mantenendo solo il messaggio del genitore (come fixup in git rebase -i).
Squash Branch…Ogni commit del ramo da quando ha lasciato la sua base, si unisce, incluso, in un commit su quella base.
Alt-trascinaIl commit trascinato e il vicino su cui lo rilasci. La stecca Drop to squash … mostra dove puoi lasciarti cadere; Esc annulla.

Ti impegna già

Se l'upstream del ramo ha i commit, la finestra di dialogo lo dice e ti chiede di selezionare I will force push … after squashing prima che si schiacci. Successivamente il messaggio offre Force Push…, che sostituisce il ramo remoto solo se è ancora dove l'hai visto l'ultima volta (force push).

La correzione si impegna per dopo

Per correggere un commit precedente senza riscrivere nulla adesso, metti in scena la modifica e scegli Create Fixup Commit… su quel commit. Scegli Fixup (mantiene il messaggio), Squash (aggiunge una nota) o Amend (sostituisce il messaggio con New message). GitTree esegue il commit fixup!, squash! o amend!; un rebase interattivo con Arrange fixup!, squash! and amend! commits attivo lo ripiega.

Le fusioni di squash mantengono i loro autori

Quando uni un ramo con Squash into staged changes (no commit), una casella di commit vuota riceve un messaggio che elenca i commit che porta, con Co-authored-by righe per i loro autori. Un messaggio già scritto viene conservato.

Impostazioni

In Preferenze › General, Squash: starting message seleziona il messaggio con cui inizia la finestra di dialogo e Squash: credit co-authors imposta se il credito inizia a essere selezionato. Ogni zucca può ancora cambiarli entrambi.

Se qualcosa va storto

"I commit non sono uno accanto all'altro. Seleziona un'esecuzione ininterrotta. "

Seleziona i commit che si susseguono sul ramo estratto oppure utilizza Squash Branch… per l'intero ramo.

"Un commit di unione si piegherebbe. Squash Branch... ripiega le unioni; una selezione non può."

Utilizza Squash Branch… o un rebase interattivo per scegliere commit per commit.

"... contiene questi commit: sono storia condivisa e non possono essere schiacciati qui."

Li ha un'altra filiale remota. Lasciali così come sono o concorda con il tuo team prima di riscrivere la cronologia condivisa dalla riga di comando.

Lo squash si ferma con un errore e un pulsante Review Again

Qualcosa ha cambiato il ramo mentre la finestra di dialogo era aperta, quindi nulla è stato schiacciato. Premi Review Again per vedere il nuovo piano, quindi schiaccia di nuovo.

Domande

Come posso annullare una zucca?

Premi Undo nel messaggio o nella barra degli strumenti. GitTree ha mantenuto i vecchi commit sotto refs/ogt/trash prima di spostare il ramo, quindi tornano esattamente come erano.

Di chi è il nome sul commit schiacciato?

L'autore del commit più antico che si piega, con relativa data; tu sei il committente. Attiva Credit the other authors (Co-authored-by) per mantenere accreditati tutti gli altri.

Lo squashing esegue i miei hook di commit o tocca i miei file di lavoro?

No. GitTree scrive i nuovi commit direttamente, come fa git rebase internamente, e non modifica mai l'indice o i file nel tuo albero di lavoro. Li firma quando la tua configurazione Git richiede commit firmati.