Git

Comment choisir des cerises dans Git

Comment choisir des cerises dans Git
git cherry pick est une fonctionnalité de fusion de Git. Mais il y a une légère différence entre git cherry pick et git merge. De plus, le cas d'utilisation est différent. Voyons d'abord comment fonctionne git merge, puis comparons-le à git cherry pick. De cette façon, vous comprendrez quand utiliser git merge et quand utiliser git cherry pick.

Disons que vous avez un dépôt 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 excellente 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 nouveau commit H.

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

Maintenant, disons que vous ne voulez pas fusionner tous les commits de la branche nouvelle idée au Maître branche. Vous voulez seulement fusionner les changements (seuls les changements de diff) dans le commit F au Maître branche. C'est là qu'intervient la sélection de cerises git. Git cherry pick vous permet de le faire. Vous venez de trouver le hachage du commit que vous voulez sélectionner et l'appliquer à la branche que vous voulez. Très simple.

Dans cet article, je vais vous montrer comment choisir dans Git. Alors, commençons.

Flux de travail Git Cherry Pick :

Dans cette section, je vais configurer un référentiel Git de manière à ce que vous compreniez pourquoi git cherry pick est utilisé et comment choisir cherry dans Git.

Tout d'abord, initialisez un référentiel Git vide Démo de sélection de cerises/ comme suit:

$ git init cherry-pick-demo

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

$ cd cherry-pick-demo/

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

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

$ git ajouter .

Maintenant, validez les modifications comme suit :

$ git commit -m 'validation initiale'

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

Ajouter le fichier à la zone de transit.

$ git ajouter .

Validez les changements :

$ git commit -m 'ajouté .fichier gitignore'

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

$ 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. Je vais utiliser un serveur SSH local pour cela ici.

Alors, ajoutez une URL de référentiel Git distant comme suit :

$ git remote ajouter l'origine [email protected] linux.com:~/cherry-pick-demo.git

Maintenant, poussez le Maître branchez-vous sur le référentiel Git distant comme suit :

$ git push origin master

Maintenant, disons bob veut contribuer au projet. Alors, il a cloné le dépôt Git sur son ordinateur.

$ git clone [email protected] linux.com:~/cherry-pick-demo.git monprojet

Maintenant, bob accède à son répertoire de projet.

$ cd monprojet/

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

$ git log --oneline

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

$ git checkout -b test

Il décide de changer 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 ajouter .

S'engage les changements.

$ git commit -m 'a 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 commet à nouveau les changements.

$ git ajouter .
$ git commit -m 'fonction printMessage() ajoutée'

Ensuite, Bob utilise la fonction dans le programme.

Il commet à nouveau les changements.

$ git ajouter .
$ git commit -m 'a utilisé la fonction printMessage() pour imprimer le message'

Maintenant, bob a les commits suivants dans le test branche.

Maintenant, bob pousse la branche de test vers le référentiel distant Git.

$ git push test d'origine

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

$ git récupérer

Maintenant, vous voyez une nouvelle branche origine/essai.

Vous avez également trouvé 3 nouveaux commits que bob a faits.

$ git log --oneline origin/test

Maintenant, vous aimeriez savoir quels changements Bob a fait.

$ 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 l'idée d'utiliser une fonction pour imprimer des messages.

Vous aimez aussi ce commit.

Donc, vous voulez fusionner 2 des 3 commits bob faits. Si vous avez utilisé git merge pour fusionner le test de branche, les 3 commits seraient appliqués. Mais, avec la fonction git cherry pick, vous ne pouvez fusionner que les commits que vous aimez.

Notez que lorsque vous choisissez des commits dans Git, vous commencez toujours par le plus ancien et avancez petit à petit vers le plus récent.

Avant, je cueillais, le principale.c le fichier se présente comme suit.

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

$ git cherry-pick 9a4e532

Un conflit de fusion! Cela peut arriver.

Maintenant, ouvrez le principale.c fichier et corrigez le conflit de fusion.

Le fichier final devrait ressembler à ceci.

Maintenant, ajoutez les modifications à la zone de transit.

$ git ajouter.

Maintenant, validez les modifications comme suit :

$ git cherry-pick --continue

REMARQUE: Vous pouvez aussi utiliser git commit ici aussi. C'est à vous. je préfère git cherry-pick -continuer car il utilisera automatiquement le message de commit du commit que je sélectionne.

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

Un nouveau commit doit être ajouté.

Maintenant, choisissez le prochain commit comme suit :

$ git cherry-pick 08ba5e7

Pas de conflit de fusion. Génial! Un nouveau commit doit être ajouté automatiquement.

Comme vous pouvez le voir, j'obtiens exactement ce que je voulais. J'ai seulement fusionné les commits dont j'avais besoin.

Alors, c'est comme ça que vous choisissez dans Git. Merci d'avoir lu cet article.

Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...
5 meilleurs jeux d'arcade pour Linux
De nos jours, les ordinateurs sont des machines sérieuses utilisées pour les jeux. Si vous ne pouvez pas obtenir le nouveau score élevé, vous saurez c...