git cherry-pick
est un outil simple mais puissant qui vous permet de transférer des commits sélectifs d'une branche à une autre. Vous pouvez l'utiliser lorsque vous ne souhaitez pas fusionner une branche entière dans le maître, mais vous souhaitez toujours inclure les modifications d'une branche de fonction.
Qu'est-ce que Git Cherry Pick et comment ça marche?
Haut Aller, les commits sont les unités qui suivent les changements au fil du temps. Chaque commit peut représenter une correction de bogue, une nouvelle fonctionnalité ou une partie d'une solution plus large. Vous pouvez considérer les commits stockés comme une liste chaînée remontant dans le temps; chaque fois que vous changez le TÊTE de votre branche, Git reconstruit les fichiers dans votre répertoire local en tenant compte de tous les commits remontant au début.
C'est une simplification, de toute façon, et Git ne stocke pas techniquement les commits sous forme de simples listes de modifications, utiliser des blobs basés sur des fichiers, mais le principe est le même.
Les choses se compliquent lorsque les succursales s'impliquent. Souvent, travailler sur un rôle prend plusieurs jours ou semaines. Au lieu de gâcher le référentiel principal, passer à une branche de fonctionnalité distincte, puis le code est revu et fusionné à nouveau. La fusion consiste simplement à créer une branche de cet historique de validation afin que l'intégralité de la branche de fonctionnalité soit incluse lorsque Git fait son travail.
Malgré cela, Que faire si vous voulez fusionner certaines choses, mais vous ne voulez pas que la branche entière soit encore incluse? Tu ne peux pas faire git merge
dans ce cas.
C'est ici que git cherry-pick
devient utile. Fait ce que son nom suggère: prend un seul commit de la branche de fonctionnalité, le sélectionne individuellement et l'applique à la branche master, ou vice versa. Ceci copie la confirmation, il y a donc un nouveau commit dans la branche de destination.
Notez qu'il n'y a pas de “ligne” Notez qu'il n'y a pas de. La nouvelle confirmation soigneusement sélectionnée créée dans le maître ne fait aucune référence à la confirmation d'origine, la confirmation est simplement copiée. Git s'en occupera lorsque vous fusionnerez à nouveau les branches, car les commits ressemblent à des copies les uns des autres.
En effet, Notez qu'il n'y a pas de “Notez qu'il n'y a pas de” Notez qu'il n'y a pas de, même si vous devez faire attention que la confirmation ci-dessus s'applique toujours à la branche caractéristiques. Malgré cela, vous ne voulez pas annuler la confirmation d'origine, car cela posera des problèmes lors de la fusion ultérieure.
Pourquoi choisir des cerises?
Il existe des cas d'utilisation pour cela. Peut-être que vous travaillez sur une fonctionnalité et qu'elle n'est pas prête à être lancée, mais vous avez corrigé un bogue dans la branche de fonction que vous voudriez inclure dans votre version hebdomadaire. Vous pouvez utiliser la sélection sélective pour copier le correctif de bogue dans le maître pour l'implémenter plus tôt.
Ou peut-être avez-vous plusieurs branches pour la production et le développement, et souhaite copier un correctif de bogue urgent de la production au développement. La sélection de cerises peut le faire aussi.
Ou il est possible que vous vous soyez même accidentellement engagé dans la mauvaise branche. Vous pouvez utiliser git cherry-pick
pour le copier à droite, et après git reset
pour annuler cette confirmation (tant qu'il est dans la TÊTE de la branche).
Utiliser Git Cherry Pick
Une fois que vous comprenez ce que vous faites, git cherry-pick
c'est assez simple à utiliser.
Le moyen le plus simple d'afficher l'historique des commits Git sur la ligne de commande consiste à utiliser la commande suivante, qui montre tous les commits mais avec un historique des forks et des merges, ce qui est crucial pour utiliser cherry-pick:
git log --pretty=format:"%h %s" --graphique
Après, vous pouvez simplement copier le hachage SHA1 à partir du commit et exécuter le cherry pick:
git cherry-pick 1da76d3
Notez que vous pouvez également choisir plusieurs confirmations en même temps, il suffit de passer plusieurs hachages.
git cherry-pick
a quelques options utiles:
--no-commit
il suffit d'appliquer les modifications à votre répertoire. Vous devrez préparer et confirmer manuellement.--edit
vous permettra de modifier le message de confirmation.-x
Notez qu'il n'y a pas de “Notez qu'il n'y a pas de: …”
Depuis lors, si vous utilisez un client Git basé sur une interface graphique comme Fourchette O GitCrack, que nous suggérons fortement, vous pouvez faire un clic droit sur l'engagement et sélectionner le sélectionner: