Comment fusionner un commit spécifique dans Git

J’ai créé une twig à partir d’un référentiel dans GitHub et j’ai commis quelque chose de spécifique. Maintenant, j’ai trouvé que le repository original avait une bonne fonctionnalité qui se trouvait chez HEAD .

Je veux fusionner uniquement sans commits précédents. Ce que je devrais faire? J’ai su fusionner tous les commits:

 git branch -b a-good-feature git pull repository master git checkout master git merge a-good-feature git commit -a git push 

git cherry-pick ‘ devrait être votre réponse ici.

Appliquez le changement introduit par un commit existant.

N’oubliez pas de lire la réponse de bdonlan sur la conséquence de la sélection dans cette publication:
“Extraire tous les commits d’une twig, pousser les commits spécifiés vers une autre” , où:

 A-----B------C \ \ D 

devient:

 A-----B------C \ \ D-----C' 

Le problème avec ce commit est que git considère commettre d’inclure tout l’historique devant eux

Où C ‘a un identifiant SHA-1 différent.
De même, le fait de choisir un engagement d’une twig à l’autre implique de générer un patch, puis de l’appliquer, ce qui entraîne également une perte d’histoire.

Cette modification des identifiants de validation interrompt entre autres la fonctionnalité de fusion de git (bien que, si elle est utilisée avec parcimonie, il existe des méthodes heuristiques qui seront écrites).
Plus important encore, il ignore les dépendances fonctionnelles – si C utilise effectivement une fonction définie dans B, vous ne le saurez jamais .

Vous pouvez utiliser git cherry-pick pour appliquer un seul engagement à votre twig actuelle.

Exemple: git cherry-pick d42c389f

Essayons de prendre un exemple et de comprendre:

J’ai une twig, disons master , pointant vers X , et j’ai une nouvelle twig pointant vers Y .

Y = twig – quelques commits

Maintenant, disons pour la twig Y que je dois combler les écarts entre la twig principale et la nouvelle twig. Voici la procédure que nous pouvons suivre:

Étape 1:

 git checkout -b local origin/new 

où local est le nom de la twig. N’importe quel nom peut être donné.

Étape 2:

  git merge origin/master --no-ff --stat -v --log=300 

Fusionnez les commits de la twig principale avec la nouvelle twig et créez également une validation de fusion du message de journal avec des descriptions à une ligne provenant d’au plus validations réelles en cours de fusion.

Pour plus d’informations et de parameters sur la fusion Git, veuillez vous reporter à:

 git merge --help 

Aussi, si vous avez besoin de fusionner un commit spécifique, vous pouvez utiliser:

 git cherry-pick