Après avoir scindé une Git Branch pour tester des mo­di­fi­ca­tions, vous pouvez fusionner à nouveau les dif­fé­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
  • 1 cer­ti­fi­cat SSL Wildcard par contrat
  • Fonction incluse Domain Connect pour une con­fi­gu­ra­tion DNS sim­pli­fiée

Git Merge, c’est quoi ?

Tra­vail­ler sur un projet dans Git offre une grande liberté : peu importe que vous soyez seul res­pon­sable du dé­ve­lop­pe­ment ou que vous tra­vail­liez au sein d’une grande équipe res­pon­sable de dif­fé­rents aspects du projet. L’uti­li­sa­tion des Git Branches permet de tra­vail­ler à la ré­so­lu­tion des problèmes et d’essayer des approches nouvelles. Si quelque chose devait mal se passer, les mo­di­fi­ca­tions sur votre Git Branch n’auront aucune incidence sur la branche prin­ci­pale, aussi appelée master. Après avoir créé la branche de dé­ve­lop­pe­ment in­dé­pen­dante avec commande Git Branch, basculez d’une branche à l’autre avec Git Checkout.

Une fois les mo­di­fi­ca­tions faites, utilisez Git Merge pour réunir les dif­fé­rentes branches. Git Merge relie deux branches en une seule et veille à ce que les mo­di­fi­ca­tions soient bien en­re­gis­trées. Dans la plupart des cas, les dif­fé­rentes lignes de dé­ve­lop­pe­ment sont réin­té­grées dans la branche prin­ci­pale.

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 dif­fé­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 com­bi­nai­son la plus simple de deux Git Branches est la fusion Fast-Forward-Merge. Si celle-ci n’est pas possible, on ef­fec­tuera 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 tra­vail­ler dans celle-ci, tandis que la branche prin­ci­pale (master) reste inchangée. Dans ce cas, Git comprend l’opération comme une con­ti­nua­tion du master et l’assemble avec les mo­di­fi­ca­tions 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 se­con­daire appelée "branche-de-travail" afin de relier les deux. La branche se­con­daire re­don­dante 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 cor­res­pond à la branche d’origine. Imaginons que vous tra­vail­lez sur une branche se­con­daire 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 prin­ci­pale, la branche se­con­daire et la branche d’origine modifiée. L’exemple suivant montre à quoi peut res­sem­bler 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 mo­di­fi­ca­tions au master et à la scission, de telle sorte qu’un Fast-Forward-Merge n’est plus possible. Cette situation arrive souvent lorsque vous tra­vail­lez sur un projet au sein d’une grande équipe.

Ré­so­lu­tion 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 exac­te­ment la même partie du fichier a été modifiée dans les deux branches, Git n’est pas en mesure de dé­ter­mi­ner 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é­char­ger, la commande Git Status permet d’afficher exac­te­ment quels fichiers doivent être modifiés. Ils sont alors affichés clai­re­ment comme "unmerged" (non fusionnés). Modifiez les fichiers en con­sé­quence puis exécutez-les avec Git Add et lancez au bout du compte un nouveau Git Commit. Vous avez main­te­nant la pos­si­bi­lité d’effectuer de merger les branches Git con­cer­nées. Vous pouvez ensuite supprimer les Git Branches dont vous n’avez plus besoin.

Conseil

Mettez vos projets en ligne au­to­ma­ti­que­ment ! Avec Deploy Now de IONOS, trois étapes suffisent : Git Push, Build et Deploy. Bé­né­fi­ciez de fonc­tion­na­li­tés comme la con­fi­gu­ra­tion rapide, l’op­ti­mi­sa­tion des flux de travail et un système com­plè­te­ment évolutif !

Aller au menu principal