Comment fusionner un commit spécifique d’une twig dans une autre dans Git?

J’ai BranchA qui est 113 commits avant BranchB .

Mais je ne veux que les 10 derniers commits de BranchA fusionnés dans BranchB .

Y a-t-il un moyen de faire cela?

La commande git cherry-pick vous permet de prendre un seul commit (quelle que soit la twig) et, essentiellement, de le rebaser dans votre twig de travail.

Le chapitre 5 du livre Pro Git l’explique mieux que moi , avec des diagrammes et autres; Recherchez la section intitulée “Regroupement et processus de sélection des cerises”. ( Le chapitre sur le Rebasing est aussi une bonne lecture.)

Enfin, il y a de bons commentaires sur le choix des cerises, la fusion et le rebasage dans une autre question SO .

vous pouvez choisir les engagements souhaités.

J’ai trouvé ceci Comment choisir plusieurs commits

Je ferais la réponse acceptée.

Si BranchA n’a pas été transféré vers une télécommande, vous pouvez réorganiser les rebase aide de rebase , puis simplement merge . Il est préférable d’utiliser la merge sur rebase lorsque cela est possible, car cela ne crée pas de commits en double.

 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] 

SOURCE: https://git-scm.com/book/en/v2/Dissortingbuted-Git-Maintaining-a-Project#Integrating-Consortingbuted-Work

L’autre façon de déplacer le travail introduit d’une twig à l’autre consiste à le choisir. Un choix à la cerise dans Git est comme un rebase pour un seul commit. Il prend le correctif introduit dans une validation et essaie de le réappliquer sur la twig sur laquelle vous êtes actuellement. Ceci est utile si vous avez un certain nombre de commits sur une twig de sujet et que vous souhaitez en intégrer un seul, ou si vous en avez seulement un sur une twig de sujet et que vous préférez le sélectionner plutôt que d’exécuter rebase. Par exemple, supposons que vous ayez un projet qui ressemble à ceci:

entrer la description de l'image ici

Si vous voulez extraire commit e43a6 dans votre twig principale, vous pouvez exécuter

 $ 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(-) 

Cela extrait la même modification introduite dans e43a6, mais vous obtenez une nouvelle valeur de validation SHA-1, car la date appliquée est différente. Maintenant, votre histoire ressemble à ceci:

entrer la description de l'image ici

Maintenant, vous pouvez supprimer votre twig de sujet et déposer les commits que vous ne voulez pas récupérer.