¿Cómo combino una confirmación específica de una twig a otra en Git?

Tengo BranchA que es 113 commits delante de BranchB .

Pero solo quiero que los últimos 10 o más commits de BranchA fusionen en BranchB .

¿Hay alguna forma de hacer esto?

El command git cherry-pick <commit> permite tomar una única confirmación (de cualquier twig) y, esencialmente, volver a establecer la base en su twig de trabajo.

El capítulo 5 del libro de Pro Git lo explica mejor que yo , con diagtwigs y demás; busque la sección titulada "Rebase y flujos de trabajo de selección de cerezas". ( El capítulo sobre Rebasamiento también es una buena lectura).

Por último, hay algunos buenos comentarios sobre la elección selectiva vs fusión vs rebase en otra pregunta SO .

usted podría seleccionar cuidadosamente los commits deseados.

Encontré este Cómo seleccionar varias confirmaciones

Yo haría la respuesta aceptada.

Si BranchA no ha sido empujado a un control remoto, entonces puede reorderar las confirmaciones usando rebase y luego simplemente merge . Es preferible usar merge sobre rebase cuando sea posible porque no crea commits duplicates.

 git checkout BranchA git rebase -i HEAD~113 ... reorder the commits so the 10 you want are first ... git checkout BranchB git merge [the 10th commit] 

FUENTE: https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project#Integrating-Contributed-Work

La otra forma de mover el trabajo introducido de una twig a otra es seleccionarlo con cuidado. Un toque de cereza en Git es como una rebase para un compromiso único. Toma el parche que se introdujo en una confirmación y trata de volver a aplicarlo en la twig en la que se encuentra actualmente. Esto es útil si tiene un número de confirmaciones en una twig de tema y desea integrar solo una de ellas, o si solo tiene una confirmación en una twig de tema y prefiere seleccionarla en lugar de ejecutar rebase. Por ejemplo, supongamos que tienes un proyecto que se ve así:

enter image description here

Si quiere tirar commit e43a6 a su twig principal, puede ejecutar

 $ git cherry-pick e43a6 Finished one cherry-pick. [master]: created a0a41a9: "More friendly message when locking the index fails." 3 files changed, 17 insertions(+), 3 deletions(-) 

Esto extrae el mismo cambio introducido en e43a6, pero obtienes un nuevo valor de compromiso SHA-1, porque la date aplicada es diferente. Ahora tu historia se ve así:

enter image description here

Ahora puede eliminar su twig de tema y descartar las confirmaciones que no desea include.