Maison >interface Web >tutoriel CSS >La cueillette des cerises s'engage à Git

La cueillette des cerises s'engage à Git

Joseph Gordon-Levitt
Joseph Gordon-Levittoriginal
2025-03-17 11:08:10876parcourir

La cueillette des cerises s'engage à Git

Cet article poursuit notre série "Advanced Git". Suivez-nous sur Twitter ou abonnez-vous à notre newsletter pour des mises à jour sur les futurs articles!

Dans le dernier épisode, nous avons exploré le rebasing et la fusion. Bien que subtilement différent, git merge et git rebase servent le même objectif fondamental: intégrer les changements d'une branche dans une autre.

Cet article se concentre sur git cherry-pick , une commande puissante permettant l'intégration sélective des validations individuelles de toute branche dans votre tête actuelle. Cela contraste fortement avec git merge et git rebase , qui intègrent tous les nouveaux engins de la branche source.

Pourquoi appliquer sélectivement un seul engagement? Un cas d'utilisation clé est de corriger les erreurs. Imaginez votre engagement accidentellement dans la mauvaise branche. cherry-pick simplifie le correctif: Passez à la branche correcte et à Cherry-Cick the Errant Commit.

Série avancée GIT:

  • Partie 1: Création de l'engagement Git idéal
  • Partie 2: Stratégies de ramification GIT efficaces
  • Partie 3: rationalisation de la collaboration avec les demandes de traction
  • Partie 4: Résoudre les conflits de fusion
  • Partie 5: Rebasing vs fusion: une comparaison
  • Partie 6: Master Interactive Rebase
  • Partie 7: Les engagements de cueillette à Git ( vous êtes ici! )
  • Partie 8: Récupérer les engagements perdus avec le réflog

Un mot de prudence: évitez la relâche sur cherry-pick . Les workflows au niveau de la branche, facilités par git merge et git rebase , sont généralement préférés. cherry-pick est un outil précieux pour des situations spécifiques, pas un remplacement pour la fusion ou la repasion standard.

Déménager un engagement

Considérez ce scénario: un engagement destiné à la succursale feature/newsletter a atterri par erreur dans master . La capture d'écran de tour suivante (une interface graphique Git pour macOS et Windows) illustre cela, mettant en évidence la validation 26bf1b48 mal placée dans master :

Alternativement, la ligne de commande révèle le problème:

 $ git journal
Commissez 26BF1B4808BA9783E4FABB19EC81E7A4C8160194 (Head -> Master)
Auteur: Tobias Günther
Date: ven 5 octobre 09:58:03 2018 0200

    Page d'inscription à la newsletter

Commit 26bf1b48 appartient à feature/newsletter . Utilisons cherry-pick pour le déplacer:

 $ git cocher la fonctionnalité / newsletter
Chassé à la succursale «fonctionnalité / newsletter»
$ statut git
Sur la fonctionnalité / newsletter de la succursale
Rien à commettre, le travail des arbres qui travaillent
$ git ceriry-pick 26bf1b48
[Fonction / newsletter 7FB55D0] Page d'inscription de newsletter
 Auteur: Tobias Günther 
 Date: ven 5 octobre 09:58:03 2018 0200
 1 fichier modifié, 0 insertions (), 0 suppressions (-)
 Créer le mode 100644 SIGNUP.html

git log montre désormais le commit dans feature/newsletter :

 $ git journal
Commit 7FB55D06A8E70FDCE46921A8A3D3A9DE7F7FB8D7 (Head -> Feature / Newsletter)
Auteur: Tobias Günther 
Date: ven 5 octobre 09:58:03 2018 0200

    Page d'inscription à la newsletter

Remarque: cherry-pick crée une copie de l'engagement, laissant l'original intact.

Nettoyage

La validation "incorrecte" reste en master . git reset le supprime:

 $ maître de paiement
Changé de succursale «maître»
$ git réinitialisation - Tête dure ~ 1
La tête est maintenant à 776f8ca Modifier sur le titre et la page d'erreur de suppression

L'interface graphique de Tower visualise tout ce processus.

Un outil spécialisé, pas un pilote quotidien

Priorisez merge ou rebase chaque fois que possible. Réservez cherry-pick pour les situations où elles ne sont pas adaptées, en particulier pour le déplacement des engins individuels. N'oubliez pas que git cherry-pick Duplicats s'engage; Nettoyez toujours par la suite.

Explorez mon "kit Git avancé" gratuit pour des plongées plus profondes dans les outils GIT, y compris les stratégies de ramification, la rébase interactive, le réflog et les sous-modules.

Happy Cherry-cicking, et à voir dans le prochain épisode "Advanced Git"!

Série avancée GIT:

  • Partie 1: Création de l'engagement Git idéal
  • Partie 2: Stratégies de ramification GIT efficaces
  • Partie 3: rationalisation de la collaboration avec les demandes de traction
  • Partie 4: Résoudre les conflits de fusion
  • Partie 5: Rebasing vs fusion: une comparaison
  • Partie 6: Master Interactive Rebase
  • Partie 7: Les engagements de cueillette à Git ( vous êtes ici! )
  • Partie 8: Récupérer les engagements perdus avec le réflog

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn