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.
Funziona in GitTree Gratuito: tutte le funzionalità Git locali, una volta effettuato l'accesso.
In questa pagina
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à.
| Azione | macOS | Windows e Linux |
|---|---|---|
| Squash Commits… sulla selezione | ⌥S | Alt+S |
| Squash into Parent… per il commit selezionato | ⌥Q | Alt+Q |
| Squash Branch… per la filiale in check-out | ⌥⇧B | Alt+Shift+B |
| Undo la zucca | ⌘Z | Ctrl+Z |
Passi
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".
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.
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.
Mantieni accreditati gli altri autori
Quando altre persone hanno scritto alcuni commit, Credit the other authors (Co-authored-by) aggiunge una riga
Co-authored-byper ciascuno di essi. Le righe aggiunte sono elencate sotto; deselezionalo per lasciarli fuori.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
| Comando | Cosa 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-trascina | Il 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.