Comment choisir cerise en git

Comment choisir cerise en git
Git Cherry Pick est une caractéristique de fusion de Git. Mais il y a une légère différence dans Git Cherry Pick et Git Merge. De plus, le cas d'utilisation est différent. Voyons comment Git Merge fonctionne d'abord, puis comparez-le à Git Cherry Pick. De cette façon, vous comprendrez quand utiliser Git Merge et quand utiliser Git Cherry Pick.

Disons, vous avez un référentiel git. Vous travaillez sur le maître branche et vous avez fait quelques commits (A, B et C) sur le maître branche aussi.

Maintenant, tout d'un coup, vous avez une bonne idée. Donc, vous créez une autre branche nouvelle idée. Ensuite, vous avez commencé à faire des commits (E, F et G) là.

Vous avez également apporté quelques modifications au maître branche à nouveau et a ajouté un nouvel engagement H.

Maintenant, si votre nouvelle idée est un succès, vous voudrez peut-être fusionner le nouvelle idée branche au maître bifurquer. Disons, vous l'avez fusionné. Il créera un nouveau validation je Comme vous pouvez le voir dans la figure ci-dessous. Le nouveau commit contiendra tout (tous les changements dans les commits E, F, et g) de la branche nouvelle idée.

Maintenant, disons, vous ne voulez pas fusionner tous les engins de la branche nouvelle idée au maître bifurquer. Vous voulez seulement fusionner les modifications (uniquement les modifications de Diff) dans l'engagement F au maître bifurquer. C'est là que Git Cherry Pick entre. Git Cherry Pick vous permet de faire ça. Vous trouverez juste le hachage de l'engagement que vous souhaitez choisir et l'appliquer à la succursale que vous voulez. Très simple.

Dans cet article, je vais vous montrer comment choisir cerise en git. Alors, commençons.

Git Cherry Pick Workflow:

Dans cette section, je vais configurer un référentiel Git d'une manière que vous comprendrez pourquoi Git Cherry Pick est utilisé et comment Cherry Pick in Git.

Tout d'abord, initialisez un référentiel git vide Cherry-pick-Demo / comme suit:

$ git init ceriry-pick-demo

Maintenant, accédez au référentiel comme suit:

$ CD Cherry-Pick-Demo /

Maintenant, créez un principal.c dossier avec le contenu suivant:

Maintenant, ajoutez le fichier à la zone de stadification comme suit:

$ git add .

Maintenant, engagez les changements comme suit:

$ git commit -m 'initial commit'

Maintenant, créez un .gitignore fichier avec le contenu suivant:

Ajouter le fichier à la zone de mise en scène.

$ git add .

Commettre les changements:

$ git commit -m 'ajouté .Fichier Gitignore '

Comme vous pouvez le voir, j'ai 2 commits maintenant dans mon maître bifurquer.

$ Git Log --Oneline

Maintenant, je veux pousser mon référentiel GIT local vers un serveur GIT distant afin que d'autres personnes puissent travailler sur ce référentiel. Vous pouvez également utiliser GitHub ici. J'utiliserai un serveur SSH local pour cela ici.

Donc, ajoutez une URL du référentiel git distant comme suit:

$ git distote ajouter d'origine git @ git.linuxhint.com: ~ / cerise-pick-demo.git

Maintenant, poussez le maître Branche au référentiel git distant comme suit:

$ git push origin maître

Maintenant, disons bob veut contribuer au projet. Alors, il a cloné le référentiel Git sur son ordinateur.

$ git clone git @ git.linuxhint.com: ~ / cerise-pick-demo.git myproject

Maintenant, Bob navigue vers son répertoire de projet.

$ cd myproject /

Il a également les 2 commits que j'ai ajoutés.

$ Git Log --Oneline

Maintenant, Bob crée un test branche pour essayer ses idées.

Test de caisse de $ git -b

Il décide de modifier la valeur de retour avec une constante Exit_success du stdlib bibliothèque.

Il ajoute les modifications à la zone de mise en scène.

$ git add .

Commet les changements.

$ git commit -m 'utilisé exit_success au lieu de 0 comme valeur de retour'

Maintenant, il décide d'utiliser une fonction PrintMessage () Pour imprimer le message. Alors, il écrit la fonction.

Il recommence les changements.

$ git add .
$ git commit -m 'ajout printMessage () function'

Ensuite, Bob utilise la fonction dans le programme.

Il recommence les changements.

$ git add .
$ git commit -m 'used PrintMessage () Fonction pour imprimer le message'

Maintenant, Bob a les engagements suivants dans le test bifurquer.

Maintenant, Bob pousse la branche de test vers le référentiel distant GIT.

$ git push Origin Test

Maintenant, Bob vous appelle et vous parle des changements impressionnants qu'il a apportés. Ainsi, vous avez récupéré les modifications du référentiel distant GIT dans votre propre référentiel local.

$ git chercher

Maintenant, vous voyez une nouvelle branche origine / test.

Vous avez également trouvé 3 nouveaux engins que Bob a faits.

$ Git Log - Originoline Origine / Test

Maintenant, vous aimeriez savoir quels changements Bob a apporté.

$ git log -p origine / test

Vous décidez de ne pas remplacer la valeur de retour par exit_success comme Bob l'a fait.

Vous aimez le concept d'utilisation d'une fonction pour imprimer des messages.

Vous aimez aussi cette validation.

Donc, vous voulez fusionner 2 des 3 commet Bob Made. Si vous avez utilisé Git Merge pour fusionner le test de branche, alors les 3 commits seraient appliqués. Mais, avec la fonctionnalité Git Cherry Pick, vous ne pouvez que fusionner les commits que vous aimez.

Notez que lorsque vous cueillez en cerise dans Git, vous commencez toujours par le plus ancien engagement et passez à la dernière petite.

Avant, je suis choisi par cerise, le principal.c Le fichier a l'air comme suit.

Maintenant, Cherry choisissons le plus ancien des 2 commits, 9A4E532 comme suit:

$ git ceriry-pick 9a4e532

Un conflit de fusion! Cela peut arriver.

Maintenant, ouvrez le principal.c déposer et réparer le conflit de fusion.

Le fichier final doit ressembler à ce qui suit.

Maintenant, ajoutez les modifications à la zone de mise en scène.

$ git add.

Maintenant, engagez les changements comme suit:

$ git cerise-pick - continu

NOTE: Vous pouvez aussi utiliser git engager ici aussi. C'est à vous. je préfère Git Cherry-Pick-Continue car il utilisera automatiquement le message de la validation de l'engagement, je suis en train de cueillir des cerises.

Maintenant, saisissez votre message de validation ici et enregistrez le fichier.

Un nouveau commit doit être ajouté.

Maintenant, Cherry choisit le prochain commit comme suit:

$ git ceriry-pick 08ba5e7

Pas de conflit de fusion. Super! Un nouvel engagement doit être ajouté automatiquement.

Comme vous pouvez le voir, je comprends exactement ce que je voulais. Je n'ai fusionné que les engins dont j'avais besoin.

Alors, c'est comme ça que tu cèche dans Git. Merci d'avoir lu cet article.