Recherche…


Introduction

Une sélection de cerises prend le correctif introduit dans un commit et essaie de le réappliquer sur la branche sur laquelle vous vous trouvez.

Source: Livre Git SCM

Syntaxe

  • git cherry-pick [--edit] [-n] [-m nombre parent] [-s] [-x] [--ff] [-S [id-clé]] commit ...
  • Git cherry-pick --Continuer
  • git cherry-pick --quit
  • git cherry-pick --abort

Paramètres

Paramètres Détails
-e, --edit Avec cette option, git cherry-pick vous permettra de modifier le message de validation avant de valider.
-X Lors de l'enregistrement de la validation, ajoutez une ligne indiquant "(cherry selected from commit…)" dans le message de validation d'origine afin d'indiquer la validation de cette modification. Ceci est fait uniquement pour les choix de cerises sans conflits.
--ff Si le HEAD actuel est le même que le parent du commit choisi, alors une avance rapide vers ce commit sera effectuée.
--continuer Continuez l'opération en cours en utilisant les informations du fichier .git / séquenceur. Peut être utilisé pour continuer après la résolution des conflits dans une sélection ou un retour en échec.
--quitter Oubliez l'opération en cours. Peut être utilisé pour effacer l'état du séquenceur après un échec de sélection ou de retour.
--avorter Annulez l'opération et revenez à l'état de pré-séquence.

Copier un commit d'une branche à une autre

git cherry-pick <commit-hash> appliquera les modifications apportées à un commit existant dans une autre branche, tout en enregistrant un nouveau commit. Essentiellement, vous pouvez copier des commits de branche en branche.

Étant donné l'arbre suivant (Source)

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Disons que nous voulons copier b886a0 sur master (sur 5a6057 ).

Nous pouvons courir

git checkout master
git cherry-pick b886a0

Maintenant, notre arbre ressemblera à quelque chose comme:

dd2e86 - 946992 - 9143a9 - a6fd86 - 5a6057 - a66b23 [master]
           \
            76cada - 62ecb3 - b886a0 [feature]

Où le nouvel commit a66b23 a le même contenu (diff source, message de validation) que b886a0 (mais un parent différent). Notez que le ramassage des cerises ne prendra en compte que les modifications sur ce commit ( b886a0 dans ce cas), pas toutes les modifications de la branche des fonctionnalités (pour cela, vous devrez soit utiliser le rebasage ou la fusion).

Copier une gamme d'engagement d'une branche à l'autre

git cherry-pick <commit-A>..<commit-B> placera chaque validation après A et jusqu'à et y compris B au-dessus de la branche actuellement extraite.

git cherry-pick <commit-A>^..<commit-B> placera le commit A et chaque commit jusqu'à et y compris B au-dessus de la branche actuellement extraite.

Vérifier si un choix de cerises est requis

Avant de lancer le processus cherry-pick, vous pouvez vérifier si la validation que vous souhaitez sélectionner existe déjà dans la branche cible, auquel cas vous n’avez rien à faire.

git branch --contains <commit> répertorie les branches locales contenant le commit spécifié.

git branch -r --contains <commit> inclut également des branches de suivi à distance dans la liste.

Trouver des commits à appliquer à l'amont

Command git cherry montre les changements qui n'ont pas encore été choisis.

Exemple:

git checkout master
git cherry development

... et voir un peu comme ceci:

+ 492508acab7b454eee8b805f8ba906056eede0ff
- 5ceb5a9077ddb9e78b1e8f24bfc70e674c627949
+ b4459544c000f4d51d1ec23f279d9cdb19c1d32b
+ b6ce3b78e938644a293b2dd2a15b2fecb1b54cd9

Les engagements qui ont été avec + seront ceux qui n'ont pas encore été choisis dans le development .

Syntaxe:

git cherry [-v] [<upstream> [<head> [<limit>]]]

Options:

-v Affiche les sujets de validation à côté des SHA1.

<upstream> branche en amont pour rechercher des validations équivalentes. Par défaut, la branche en amont de HEAD.

<head> branche de travail; par défaut à HEAD.

<limit> Ne pas signaler les commits jusqu'à (et y compris) la limite.

Consultez la documentation de git-cherry pour plus d'informations.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow