¿Es necesaria una nueva twig antes de la selección de git cherry?

He seguido este ejemplo aquí , y muestra que creas una twig temporal antes de usar git cherry-pick , y luego seleccionas esa twig temporal.

En el ejemplo, la twig temporal se llama newbar y se bifurca desde foo .

¿Es necesario tener la twig temporal? ¿O puedes simplemente elegir de foo ? El ejemplo no aclara el propósito de esta twig temporal.

No, no necesitas tener una sucursal separada. Esto es perfectamente legal:

 $ git log --decorate --oneline --graph --all * f1188b1 (HEAD -> master) commit3 * 90a233e commit2 * f167481 commit1 

Luego, mientras está todavía en el master twig único y único:

 $ git cherry-pick 90a233e 

La trampa aquí es que es muy posible tener un conflicto (a continuación se muestra el resultado después de una selección):

 error: could not apply 90a233e... commit2 hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' 

Simplemente maneje y resuelva, según el git-status :

 $ git status On branch master You are currently cherry-picking commit 90a233e. (fix conflicts and run "git cherry-pick --continue") (use "git cherry-pick --abort" to cancel the cherry-pick operation) Unmerged paths: (use "git add <file>..." to mark resolution) both modified: file1.txt no changes added to commit (use "git add" and/or "git commit -a") 

Básicamente, solucionará el conflicto y luego agregará los cambios al índice y ejecutará $ git cherry-pick --continue para completar la operación de selección de cereza.

No es necesario crear una nueva sucursal para recoger cerezas. La razón por la que lo hace el ejemplo es porque simula el command rebase .

Este ejemplo es más claro

Si estuvieras en el nodo H en este gráfico, y hayas escrito git cherry-pick E (sí, escribirías parte o todo el SHA para la confirmación, pero por simplicidad, usaré las tags que son Ya aquí), terminas con una copy de commit E -llamémoslo "E prime" o E'-que apunta a H como su padre, como de la siguiente manera:

enter image description here

Lo importante de notar aquí es que Git ha copydo los cambios realizados en un lugar y los ha reproducido en otro lugar.