2011-02-09 7 views
5

Per spostare un individuo da un ramo all'altro mi rendo conto che ci sono alcune opzioni in git. Ho sperimentato con git merge e git cherry-pick ma non riesco a vedere quando è preferibile git cherry-pick.In quale istanza sarebbe necessario git cherry-pick invece di git merge?

mia comprensione è il seguente:

git merge <hash> sposta l'specificato commit da un ramo all'altro preservare come uno commit.

git cherry-pick <hash> crea una copia del commit nel secondo ramo ma è separata con il proprio hash di commit.

La prima opzione mi sembra preferibile, ma quali sono i casi in cui è preferibile lo cherry-pick?

risposta

7

Supponiamo che tu abbia una filiale da master che ha un sacco di commit. Forse hai apportato una modifica appropriata su master, ma non vuoi importare tutte le modifiche (una piccola correzione di bug, ad esempio, o l'aggiunta di una piccola funzionalità). Con git cherry-pick, è possibile utilizzare solo per il commit di dall'altro ramo e portarlo in master.

+0

se si unisce * specificando * l'hash, si unisce solo quell'unico commit? – hvgotcodes

+3

@hvgotcodes: No, quando si uniscono, si ottiene '' e tutti gli antenati in '' poiché si è allontanato dal ramo in cui si sta fondendo. Un nome di ramo è in realtà solo un hash con nome. – mipadi

+0

Grazie per averlo cancellato - +1. – hvgotcodes

0

Un altro caso di utilizzo è quando si perde un impegno e si desidera recuperarlo. http://www.programblings.com/2008/06/07/the-illustrated-guide-to-recovering-lost-commits-with-git/

Mathieu recupero @ ml (master) $ git cherry-pick 93b0c51cfea8c731aa385109b8e99d19b38a55be Finito uno cherry-pick. Creato commit f443703: Ora che era fresco 1 file modificati, 1 inserzioni (+), 0 delezioni (-) creare modalità di 100.644 cool_file

È necessario avere l'hash naturalmente.