Git Merge : fusionner les branches Git

Après avoir scindé une Git Branch pour tester des modifications, vous pouvez fusionner à nouveau les différentes branches avec la commande Git Merge. Git distingue la fusion rapide (Fast-Forward-Merge) et la fusion à trois voies (Three-Way-Merge).

Nom de domaine
Votre domaine en un clic
  • Domaine .eu ou .fr + éditeur de site gratuit pendant 6 mois
  • 1 certificat SSL Wildcard par contrat
  • Boîte email de 2 Go

Git Merge, c’est quoi ?

Travailler sur un projet dans Git offre une grande liberté : peu importe que vous soyez seul responsable du développement ou que vous travailliez au sein d’une grande équipe responsable de différents aspects du projet. L’utilisation des Git Branches permet de travailler à la résolution des problèmes et d’essayer des approches nouvelles. Si quelque chose devait mal se passer, les modifications sur votre Git Branch n’auront aucune incidence sur la branche principale, aussi appelée master. Après avoir créé la branche de développement indépendante avec commande Git Branch, basculez d’une branche à l’autre avec Git Checkout.

Une fois les modifications faites, utilisez Git Merge pour réunir les différentes branches. Git Merge relie deux branches en une seule et veille à ce que les modifications soient bien enregistrées. Dans la plupart des cas, les différentes lignes de développement sont réintégrées dans la branche principale.

Syntaxe de Git Merge

Git propose deux manières d’effectuer un Git Merge : une fusion Fast-Forward et une fusion Three-Way. Nous verrons plus loin les différences entre ces deux méthodes. La syntaxe de base de Git Merge pour les branches est cependant toujours la même, voici comment elle se présente :

git merge <branche></branche>

La branche indiquée dans l’argument "<branche>" est intégrée à la branche actuelle.

Fusionner les Git Branches

La combinaison la plus simple de deux Git Branches est la fusion Fast-Forward-Merge. Si celle-ci n’est pas possible, on effectuera une fusion dite « à trois sources » (Three-Way-Merge).

Fast-Forward-Merge

Une fusion rapide (Fast-Forward-Merge) peut se faire dès lors qu’il existe un lien linéaire entre la branche Git actuelle et la branche-cible. Imaginons une opération au cours de laquelle vous créez une branche Git pour travailler dans celle-ci, tandis que la branche principale (master) reste inchangée. Dans ce cas, Git comprend l’opération comme une continuation du master et l’assemble avec les modifications en un seul et même commit. Voici à quoi cela ressemble :

git checkout master
git merge branche-de-travail
git branch -d branche-de-travail

Dans cet exemple, on repasse d’abord sur la master Branch avant le Git Merge avec la branche secondaire appelée "branche-de-travail" afin de relier les deux. La branche secondaire redondante est ensuite supprimée avec la commande "git branch -d".

Three-Way-Merge

Un Git Merge telle que décrit ci-dessus n’est toutefois pas possible si aucune des deux branches ne correspond à la branche d’origine. Imaginons que vous travaillez sur une branche secondaire scindée du master alors que le master est également modifié dans le même temps : il faudra faire une fusion à trois sources. Le « Three » vient ici des trois commits : la branche principale, la branche secondaire et la branche d’origine modifiée. L’exemple suivant montre à quoi peut ressembler un Git Merge trois sources avec trois points de départ :

git checkout -b master new-feature
git add fichier
git commit -m "Exemples de modifications apportées à ce projet"
git add fichier-deux
git commit -m "Fin des modifications à titre d’exemple"
git checkout master
git add fichier-trois
git commit -m "Modifications apportées au master"
git merge new-feature
git branch -d new-feature

Dans cet exemple, on apporte des modifications au master et à la scission, de telle sorte qu’un Fast-Forward-Merge n’est plus possible. Cette situation arrive souvent lorsque vous travaillez sur un projet au sein d’une grande équipe.

Résolution de conflits pour Git Merge

En tentant de merger des branches Git, vous risquez d’être confronté à un conflit très commun. En effet, si exactement la même partie du fichier a été modifiée dans les deux branches, Git n’est pas en mesure de déterminer quelle version doit être utilisée. Dans ce cas, le processus est stoppé avant la fin du Git Merge. Vous pouvez alors résoudre le conflit à la main après avoir reçu le message suivant :

CONFLICT (content): Merge conflict in <fichier></fichier>
Automatic merge failed; fix conflicts and then commit the result.

Bien connue grâce à la très pratique Git Cheat Sheet avec PDF à télécharger, la commande Git Status permet d’afficher exactement quels fichiers doivent être modifiés. Ils sont alors affichés clairement comme "unmerged" (non fusionnés). Modifiez les fichiers en conséquence puis exécutez-les avec Git Add et lancez au bout du compte un nouveau Git Commit. Vous avez maintenant la possibilité d’effectuer de merger les branches Git concernées. Vous pouvez ensuite supprimer les Git Branches dont vous n’avez plus besoin.

Conseil

Mettez vos projets en ligne automatiquement ! Avec Deploy Now de IONOS, trois étapes suffisent : Git Push, Build et Deploy. Bénéficiez de fonctionnalités comme la configuration rapide, l’optimisation des flux de travail et un système complètement évolutif !

Cet article vous a-t-il été utile ?
Page top