Question Qu'est-ce que cueillir un commit avec git?


Récemment, on m'a demandé de choisir un engagement. Mais je n'ai aucune idée de ce que cela signifie. Alors qu'est-ce que cherry picking un commit en git signifie? Comment faites-vous?


1356
2018-02-18 07:20


origine


Réponses:


La cueillette des cerises dans git signifie choisir un commit d'une branche et l'appliquer à une autre.

Ceci est en contraste avec d'autres moyens tels que merge et rebase qui normalement applique beaucoup commits sur une autre branche.

  1. Assurez-vous que vous êtes sur la branche à laquelle vous souhaitez appliquer le commit.

    git checkout master
    
  2. Exécutez ce qui suit:

    git cherry-pick <commit-hash>
    

N.B .:

  1. Si vous choisissez une succursale publique, vous devriez envisager d'utiliser

    git cherry-pick -x <commit-hash>
    

    Cela générera un message de validation standardisé. De cette façon, vous (et vos collègues) pouvez toujours garder une trace de l'origine du commit et éviter les conflits de fusion dans le futur.

  2. Si vous avez des notes attachées au commit, elles ne suivent pas le choix. Pour les amener aussi, vous devez utiliser:

    git notes copy <from> <to>
    

Liens supplémentaires:


1621
2018-02-18 07:29



Cette citation est tirée de; Contrôle de version avec Git (Vraiment super livre, je vous encourage à l'acheter si vous êtes intéressé par git)

Edit: Puisque cette réponse est encore en train d'être prise en compte, j'aimerais ajouter un très joli didacticiel vidéo en action à ce sujet:

Youtube: Introduction à Git cherry-pick

Utilisation de git cherry-pick La commande git cherry-pick commit applique le   modifications introduites par le commit nommé sur la branche en cours. Ce sera   introduire un nouveau commit distinct. Strictement parlant, en utilisant git   Cherry-Pick ne modifie pas l'historique existant dans un référentiel;   à la place, cela ajoute à l'histoire. Comme avec les autres opérations de Git   introduire des changements via le processus d'application d'un diff, vous devrez peut-être   résoudre les conflits pour appliquer complètement les modifications du commit donné .   La commande git cherry-pick est typiquement utilisée pour introduire   valide à partir d'une branche dans un référentiel sur une branche différente. UNE   L'utilisation courante consiste à transférer des ports d'un service de maintenance   branche à une branche de développement.

$ git checkout rel_2.3
$ git cherry-pick dev~2 # commit F, above

avant: before

après: after


180
2018-05-13 15:06



La sélection de cerises dans Git est conçue pour appliquer un commit d'une branche dans une autre branche. Cela peut être fait si vous par exemple. fait une erreur et a commis un changement dans la mauvaise branche, mais ne veut pas fusionner toute la branche. Vous pouvez juste par exemple. retournez le commit et choisissez-le sur une autre branche.

Pour l'utiliser, vous avez juste besoin git cherry-pick hash, où hash est un hash de commit d'une autre branche.

Pour la procédure complète, voir: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html


124
2018-02-18 07:29



cherry-pick est une fonctionnalité de Git. Si quelqu'un veut valider des validations spécifiques dans une branche à une branche cible, alors la sélection de cerise est utilisée.
        Git cerise les étapes sont comme ci-dessous.

  1. checkout (passer à) branche cible.
  2. git cherry-pick <commit id>
    

    Ici, commit id est l'identifiant d'activité d'une autre branche.Eg.

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
  3. pousser à la cible

Visite https://git-scm.com/docs/git-cherry-pick


24
2017-08-24 09:39



Vous pouvez penser si un choix de cerise est similaire à un rebase, ou plutôt il est géré comme un rebase. Par ceci, je veux dire qu'il prend un commit existant et le régénère en prenant, comme point de départ, la tête de la branche sur laquelle vous êtes actuellement.

UNE rebase prend un commit qui a un parent X et régénère le commit comme s'il avait effectivement un parent Y, et c'est précisément ce que cherry-pick Est-ce que.

Cherry pick est plus sur la façon dont vous sélectionnez les commits. Avec pull (rebase), git régénère implicitement vos commits locaux au-dessus de ce qui est tiré vers votre branche, mais avec cherry-pick vous choisissez explicitement des commit (s), et les régénérez implicitement (eux) au-dessus de votre branche actuelle.

Donc, la façon dont vous le faites diffère, mais sous le capot, ce sont des opérations très similaires - la régénération des commits.


7
2018-01-31 22:19



C'est un peu comme Copier (de quelque part) et Coller (quelque part), mais pour des commits spécifiques.

Si vous voulez faire un correctif, par exemple, vous pouvez utiliser le cherry-pick fonctionnalité.

Faire votre cherry-pick dans une branche de développement, et merge qui s'engagent à une branche de publication. De même, faites un cherry-pick d'une branche de publication au maître. Voila


2
2017-10-07 11:55