Ricerca…


introduzione

Un cherry-pick prende la patch che è stata introdotta in un commit e prova a riapplicarla sul ramo in cui ti trovi attualmente.

Fonte: Git SCM Book

Sintassi

  • git cherry-pick [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] [-S [key-id]] commit ...
  • git cherry-pick --continue
  • git cherry-pick --quit
  • git cherry-pick --abort

Parametri

parametri Dettagli
-e, --edit Con questa opzione, git cherry-pick ti permetterà di modificare il messaggio di commit prima di commetterlo.
-X Quando registri il commit, aggiungi una riga che dice "(cherry picked from commit ...)" al messaggio di commit originale per indicare da quale commit è stata selezionata la selezione di questo cambiamento. Questo viene fatto solo per cherry picks senza conflitti.
--ff Se l'attuale HEAD è uguale al parent del commit cherry-pick, verrà eseguito un avanzamento veloce a questo commit.
--Continua Continua l'operazione in corso usando le informazioni in .git / sequencer. Può essere utilizzato per continuare dopo aver risolto i conflitti in un cherry-pick fallito o in un ripristino.
--smettere Dimentica l'operazione corrente in corso. Può essere usato per cancellare lo stato del sequencer dopo un cherry-pick fallito o il ripristino.
--abort Annullare l'operazione e tornare allo stato pre-sequenza.

Copia di un commit da un ramo all'altro

git cherry-pick <commit-hash> applicherà le modifiche apportate in un commit esistente a un altro ramo, mentre registra un nuovo commit. In sostanza, puoi copiare i commit da un ramo all'altro.

Dato il seguente albero (fonte)

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Diciamo che vogliamo copiare b886a0 su master (sopra a 5a6057 ).

Possiamo correre

git checkout master
git cherry-pick b886a0

Ora il nostro albero assomiglierà a qualcosa:

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Dove il nuovo commit a66b23 ha lo stesso contenuto (diff source, messaggio di commit) come b886a0 (ma un genitore diverso). Nota che il cherry-picking rileverà solo le modifiche su quel commit ( b886a0 in questo caso) non tutte le modifiche nel ramo della funzione (per questo dovrai usare rebasing o merging).

Copia di un intervallo di commit da un ramo all'altro

git cherry-pick <commit-A>..<commit-B> posizionerà ogni commit dopo A e fino a includere B in cima al ramo attualmente estratto.

git cherry-pick <commit-A>^..<commit-B> posizionerà il commit A e ogni commit fino a includere B in cima al ramo attualmente estratto.

Verifica se è richiesto un cherry-pick

Prima di iniziare il processo cherry-pick, puoi verificare se il commit che vuoi selezionare già esiste nel ramo di destinazione, nel qual caso non devi fare nulla.

git branch --contains <commit> elenca i rami locali che contengono il commit specificato.

git branch -r --contains <commit> include anche i rami di tracciamento remoto nell'elenco.

Trova i commit ancora da applicare a monte

Comando git cherry mostra le modifiche che non sono state ancora selezionate.

Esempio:

git checkout master
git cherry development

... e vedi l'output un po 'come questo:

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

Il commit che essere con + saranno quelli che non sono ancora stati selezionati nello development .

Sintassi:

git cherry [-v] [<upstream> [<head> [<limit>]]]

Opzioni:

-v Mostra i soggetti di commit accanto agli SHA1.

<upstream> Il ramo upstream per cercare commit equivalenti. Predefinito al ramo upstream di HEAD.

<head> ramo di lavoro; il valore predefinito è HEAD.

<limite> Non segnalare commit fino al limite (incluso).

Controlla la documentazione di git-cherry per maggiori informazioni.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow