Comment combiner des branches avec Git Merge

Si vous utilisez Git pour la gestion du code source, vous pourriez avoir besoin de fusionner différentes branches de développement pour un projet en une seule branche. Cet article vous guidera sur la manière de combiner deux branches de développement avec la commande de fusion Git.

Nous vous montrerons comment créer un projet Git, créer différentes branches et fusionner une branche dans une autre. De plus, vous apprendrez ce qu’est une fusion rapide et une fusion à trois voies, ainsi que comment fusionner une branche dans un dépôt distant.

Publicité

Qu’est-ce que la fusion Git?

Git est un outil DevOps populaire que les développeurs peuvent utiliser pour suivre et gérer les modifications apportées au code écrit par différentes équipes. Avec la commande Git merge, vous pouvez prendre votre branche de développement actuelle (que vous avez forkée à partir de la branche principale) et fusionner ses changements de code dans la branche principale.

La fusion Git est une commande que vous utiliserez le plus souvent lorsque vous travaillez en équipe. Il peut arriver que vous et un autre développeur collaboriez sur une fonctionnalité sur deux branches distinctes. Cependant, lorsque viendra le moment, vous devrez combiner votre travail dans une seule branche, tester ces changements, puis fusionner votre développement collaboratif dans la branche de développement principale.

Comme la branche principale de développement est mise à jour, la branche de fonction séparée sur laquelle vous et d’autres développeurs travaillez ne sera pas mise à jour avec les changements de votre équipe. Par conséquent, en tant que meilleure pratique, lorsque vient le moment de soumettre une pull request, vous devriez toujours commencer par mettre à jour votre version locale de la branche principale avec les derniers changements. Ensuite, vous pouvez fusionner la branche principale mise à jour dans votre branche de développement avant de valider et de soumettre une pull request pour la fusion dans la branche principale de développement.

Comment combiner deux branches Git avec Git merge

En tant que développeur, être compétent en Git peut vraiment vous aider à être plus productif. Pour commencer, il est fondamental de comprendre comment exécuter des commandes Git à partir de la ligne de commande. Avant de commencer, voyons ce que vous devrez configurer en premier lieu avant de pouvoir commencer à fusionner différentes branches Git.

Publicité

Prérequis

Pour commencer, vous aurez besoin des éléments suivants :

Parcourons rapidement les différentes étapes nécessaires pour installer Git sur un PC Windows (nous avons également un guide séparé sur comment installer Git sur Ubuntu):

  • Suivez le lien pour télécharger Git pour votre machine et installer les fichiers.
  • Une fois installé, ouvrez votre terminal et saisissez git –version:
git –version

Si vous obtenez un numéro de version en retour, c’est parfait ! Cependant, si vous obtenez un message « commande introuvable », alors vous devrez peut-être ajouter Git à votre variable $PATH. C’est généralement un problème de Windows.

Remédions rapidement à cela pour que vous n’ayez pas à chercher partout.

Publicité

  • Allez dans la barre de démarrage et faites un clic droit sur Ce PC.
  • Sélectionnez Propriétés.
  • Cliquez sur Paramètres système avancés.
  • Sous Propriétés du système, cliquez sur Variables d’environnement. Ici, vous pouvez ajouter des valeurs à la variable $PATH.
  • Sélectionnez $PATH et cliquez sur Modifier.
  • Cliquez sur Nouveau et ajoutez un chemin vers git/cmd.
  • Cliquez sur Nouveau et ajoutez le chemin vers le fichier git.exe.

Enregistrez les modifications, revenez au terminal et exécutez à nouveau la commande git -version.

git -version

Vous devriez maintenant obtenir le numéro de version retourné. Après avoir fait le travail préparatoire et configuré votre compte GitHub ou GitLab, vous devriez maintenant être opérationnel.

Création d’un projet Git

Dans cette section, je vais vous guider à travers les différentes étapes nécessaires pour créer un nouveau dépôt.

Sur votre nouveau compte Github créé, cliquez sur Nouveau sur le côté gauche de l’écran.

Ensuite, vous devrez donner un nom à votre dépôt et remplir quelques autres détails. Donnez-lui une brève description si vous le souhaitez, rendez-le public, et une bonne pratique est d’ajouter toujours un fichier LisezMoi. Une fois terminé, cliquez sur Créer le dépôt.

Maintenant, pour commencer à travailler dans votre éditeur de code, vous voudrez cloner votre nouveau dépôt en cliquant sur le bouton Cloner. Sélectionnez HTTPS, copiez l’adresse et ouvrez votre terminal.

Dans votre terminal, utilisez la commande cd pour choisir où vous souhaitez créer un nouveau répertoire pour votre projet.

cd user/desktop/repo/

Lorsque vous êtes dans la bonne branche, utilisez la commande mkdir pour créer un nouveau répertoire :

mkdir <name of your directory>

À présent, utilisons à nouveau la commande cd pour accéder à ce nouveau répertoire créé :

 cd <name of your newly created directory> 

Une fois dans votre nouveau répertoire, utilisez la commande git init pour créer un nouveau dépôt :

git init

Ensuite, utilisez la commande git clone avec l’adresse HTTPS correcte, puis appuyez sur Entrée. Par défaut, cela créera une branche principale dans votre dépôt local :

git clone <paste https address here>

Maintenant, ouvrez votre nouveau dépôt cloné avec Visual Studio Code. Vous pouvez désormais commencer à écrire du code :

Après avoir créé votre dépôt, vous serez déjà sur la branche principale. Par souci de bonnes pratiques, vous ne devriez jamais pousser directement du code vers la branche principale, qui doit être protégée.

À des fins de ce tutoriel, nous ne couvrirons pas les branches Git protégées. Mais sur le terrain, vous ne pourrez jamais envoyer du code à la branche principale sans une demande de fusion.

Créer une autre branche Git

Nous sommes actuellement sur la branche principale, vous avez codé quelque chose pour créer du contenu, et maintenant vous voulez créer une nouvelle branche.

Dans votre terminal, utilisez la commande git checkout pour créer une nouvelle branche et basculer automatiquement dessus:

git checkout -b <name of new branch>

La commande devrait automatiquement couper cette nouvelle branche de votre branche principale, donc le code de cette dernière ne devrait pas changer.

Maintenant, voici le moment amusant où nous pourrons utiliser la commande git merge. Sur votre nouvelle branche créée, vous devrez d’abord ajouter plus de code pour que votre branche actuelle soit en avance sur la branche principale avec de nouveaux changements.

Maintenant que vous souhaitez fusionner cette nouvelle branche dans la principale, vous pourriez rencontrer un conflit de fusion, qui est une insertion de code en conflit avec le code déjà existant. Ce n’est vraiment pas amusant de traiter avec cela.

Alors, que faites-vous? Voyons comment fusionner une branche dans une autre.

Fusionner vos deux branches Git dans votre dépôt local

Pendant que vous êtes sur votre nouvelle branche, allez dans votre terminal et utilisez la commande git branch pour vérifier le nom de la branche sur laquelle vous vous trouvez:

git branch

Vous êtes maintenant sur votre nouvelle branche, utilisez à nouveau la commande git checkout pour passer à votre branche principale:

git checkout Main

Ensuite, utilisez la commande git pull pour importer les éventuels changements que votre équipe aurait pu apporter et mettre à jour votre branche principale locale:

git pull

Maintenant, utilisez à nouveau git checkout pour passer à la nouvelle branche que vous souhaitez fusionner avec la branche principale:

git checkout <your specified branch>

Il est maintenant temps d’utiliser la commande git merge. Cela va prendre la version actuelle de votre branche principale et la fusionner avec votre branche de développement:

git merge Main

Le résultat de la fusion aura la dernière version du code ainsi que la fonctionnalité que vous avez développée.

Autres façons de fusionner des branches Git

Après vous avoir montré comment fusionner une nouvelle branche avec notre branche principale, voyons d’autres façons de fusionner des branches Git que vous pourriez avoir besoin d’utiliser.

Qu’est-ce qu’une fusion fast-forward?

A fast-forward merge is another way to merge multiple commits on one branch with one command rather than merging them all manually. Another advantage of using a fast-forward merge is that it will combine the histories of multiple commits while squashing the commit history.

Supposons que nous ayons une branche de fonctionnalité en avance sur la branche principale de plusieurs commits. Nous voulons fusionner tous ces commits sans avoir à les fusionner manuellement un par un. Dans ce cas, nous utiliserons une fusion en avance rapide.

Dans notre exemple, nous commencerons par écrire du code et ajouter un nouveau commit à notre branche avec les commandes git add et git commit:

git add <filename>
git commit –m “added a thing”

Maintenant, nous allons ajouter un autre commit à notre nouvelle branche en utilisant à nouveau les mêmes commandes:

git add <filename>
git commit –m “added another thing”

Ensuite, nous voulons pousser ces deux commits vers notre dépôt distant sans avoir à effectuer deux poussées. Pour ce faire, nous devons utiliser l’option -ff sur la commande de fusion git

git merge --ff

Cela fusionnera les deux commits en même temps en un seul et permettra à votre code de rattraper la branche principale.  

Qu’est-ce qu’une fusion à 3 voies?

Imaginez un cas où votre équipe de développement a créé de nouvelles fonctionnalités sur deux branches distinctes. Vous êtes maintenant prêt à mettre à jour les branches et à les fusionner dans la branche principale afin que cette dernière soit prête à pousser du code vers un dépôt distant.

Pour vous assurer que les nouvelles fonctionnalités fonctionnent correctement ensemble, il est judicieux de fusionner les branches de fonctionnalité les unes dans les autres, puis de faire des tests. Une fusion à 3 voies nous permettra de combiner deux branches distinctes avec leur ancêtre commun.

Parcourons les étapes nécessaires pour réaliser une fusion à 3 voies vers la branche cible. Dans l’exemple ci-dessous, nous commencerons par créer une nouvelle branche, ajouter deux commits et la fusionner avec notre branche principale en utilisant une fusion à 3 voies. 

Tout d’abord, commençons par créer une branche ‘nouvelle-fonctionnalité’ et passer automatiquement à celle-ci avec la commande git checkout. Spécifier -b avec cette commande provoque la création d’une nouvelle branche :

git checkout -b new-feature main

Ensuite, nous ajoutons des fichiers et un nouveau commit à notre branche avec les commandes suivantes :

git add <file>
git commit -m "Start a feature"

Nous ajoutons ensuite un autre commit à notre nouvelle branche avec les commandes suivantes :

git add <file>
git commit -m "Finish a feature"

Après avoir ajouté du nouveau code à notre nouvelle branche, vous devez imaginer une situation où notre branche principale continue également à progresser. Nous reviendrons d’abord à cette branche avec la commande git checkout :

git checkout main

Ensuite, nous ajouterons un nouveau commit à notre branche principale :

git add <file>
git commit -m "make some changes to Main"

Maintenant, nous voulons fusionner la branche ‘nouvelle-fonctionnalité’ que nous avons créée précédemment avec notre branche principale mise à jour. Comme le travail va se poursuivre sur notre branche principale, nous terminerons en supprimant la branche ‘nouvelle-fonctionnalité’ avec la commande git branch.

git merge new-feature
git branch -d new-feature 

Nous avons maintenant fusionné nos deux branches avec un ancêtre commun dans notre branche principale. Celle-ci est désormais prête à être fusionnée dans votre dépôt distant et à faire progresser notre projet logiciel, et nous verrons comment faire cela ensuite. 

Comment fusionner une branche Git avec un dépôt distant

Il peut arriver parfois que vous ayez besoin de fusionner une branche dans un dépôt distant. Marchons ensemble à travers les étapes pour accomplir cela.

Imaginons une situation où vous avez écrit du nouveau code pour une nouvelle fonctionnalité que votre propriétaire de produit voulait créer. Après avoir testé votre code, puis l’avoir passé en revue avec votre propriétaire de produit, vous êtes maintenant prêt à fusionner votre travail acharné dans le dépôt distant de votre équipe.

Comme mentionné précédemment, vous ne devriez jamais être en mesure de pousser votre code directement sur la branche principale. Vous devez toujours respecter le flux de travail Git que nous avons détaillé au début de ce guide.

Après avoir revu le processus Git, fusionnons votre code. Reprenons où nous nous étions arrêtés, nous avons maintenant une branche à jour : les dernières mises à jour de la branche principale ont été récupérées dans votre dépôt local.

Vous vous trouvez maintenant aux portes du dépôt distant. Comment y accéder ? C’est simple, nous allons utiliser quelques commandes git supplémentaires.

Comme bonne pratique, vous devriez toujours vérifier l’état de votre branche avec la commande git status. Cette commande montrera quels fichiers ont été ajoutés, supprimés, suivis ou non suivis.

git status

Vous devriez également vérifier si vous avez ajouté des fichiers qui ne sont pas suivis. Dans ce cas, vous devez les ajouter pour qu’ils soient suivis et ajoutés à la validation.

Vous pouvez utiliser la commande git add pour ajouter tous les fichiers que vous avez créés dans votre développement. Maintenant, vous devrez écrire les noms des fichiers si vous souhaitez ajouter des fichiers spécifiques. Si vous voulez ajouter tous les fichiers, utilisez « . » pour ajouter tous les fichiers.

Ensuite, nous utiliserons la commande git commit pour valider tous les fichiers que nous avons ajoutés à l’étape précédente. Vous devrez utiliser le drapeau -m pour écrire un message, sinon, vous serez redirigé en mode éditeur de texte pour rédiger un message, ce qui n’est pas un processus simplifié.

Pour votre message, vous pouvez écrire une brève note sur ce que vous avez fait. Par exemple, « créé une nouvelle fonctionnalité intéressante, ajouté une nouvelle icône au menu et effectué des corrections de bogues. »

git commit -m “<your commit message goes here>”

Enfin, vous pouvez utiliser la commande git push pour pousser votre branche vers le dépôt distant.

git push --set-upstream origin <<your branch name>>

Maintenant, après avoir poussé votre branche, vous devrez vous rendre sur GitHub ou sur l’endroit où vos dépôts distants sont hébergés, trouver votre dernier push et cliquer sur Créer une demande de fusion.

Une fois que vous aurez cliqué sur ce bouton, vous serez dirigé vers une page pour ajouter des relecteurs et des membres de votre équipe qui approuveront ou refuseront votre demande de fusion. Dans le second cas, ils pourront ajouter des commentaires sur ce qui doit être corrigé avant de vous permettre de fusionner votre branche dans la branche principale distante.

Une fois que l’examen est terminé et que votre demande de fusion a été approuvée, le bouton Fusionner sera disponible. Cliquez sur ce bouton pour commencer la fusion. Si la fusion est réussie, vous recevrez un message de confirmation indiquant que votre nouveau code a été ajouté.

Félicitations! Vous avez les bases pour utiliser la commande de fusion Git!

Conclusion

La fusion Git est une commande puissante qui vous permettra, ainsi qu’à votre équipe, d’utiliser des branches différentes pour travailler sur de nouvelles fonctionnalités, puis de les rassembler dans votre dépôt principal.

Vous avez appris les étapes appropriées nécessaires pour créer des branches, les fusionner, ajouter des fichiers et des commits, et surtout, pousser ces branches vers un dépôt distant. De plus, vous comprenez maintenant comment réaliser une fusion fast-forward pour combiner plusieurs branches liées en une seule commande, ce qui peut vraiment aider à rendre tout travail de développement plus efficace.

Git est un outil puissant qui peut faire beaucoup de choses. Plus vous en apprenez sur les différentes commandes que vous pouvez utiliser, meilleur vous deviendrez en tant que développeur. Maintenant que vous avez appris tout ce que vous devez savoir sur la fusion des branches, il est temps d’aller découvrir d’autres commandes. Bonne chance dans votre quête pour maîtriser Git!


Source:
https://petri.com/git-merge-combine-branches/