Git
Cueillette De Cerises
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.
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.