Fusion à trois voies
Fait partie de la section Gestion de versions du Journey Terminal de Coddy — leçon 36 sur 58.
Si les deux branches ont évolué indépendamment, Git ne peut pas simplement effectuer une avance rapide (fast-forward). À la place, il effectue une fusion à trois points (three-way merge) : il examine l'ancêtre commun et les extrémités des deux branches, puis produit un nouveau commit qui les combine.
Ce nouveau commit est le commit de fusion. Il a deux parents, un de chaque branche :
git switch main
git merge feature -m "Merge feature"L'option -m fournit directement le message de validation de fusion, ainsi Git n'ouvre pas d'éditeur.
La plupart du temps, Git peut combiner automatiquement les modifications des deux branches, tant qu'elles concernent des parties différentes des fichiers. Les conflits ne surviennent que lorsque les deux branches ont modifié les mêmes lignes, ce qui est le sujet de la prochaine leçon.
Défi
MoyenVous commencez dans un nouveau dossier avec top.txt (contenu : a) et bottom.txt (contenu : b).
Initialisez le dépôt, effectuez un premier commit, puis :
- Créez une branche
featureet ajoutez la ligneaddedàtop.txt; commitez. - Basculez sur
mainet ajoutez la ligneaddedàbottom.txt; commitez. - Fusionnez
featuredansmainavec le messageMerge feature.
Affichez le nombre de commits accessibles depuis HEAD en utilisant git rev-list --count HEAD. Le nombre attendu est 4 (initial + feature + main + merge).
Aide-mémoire
Lorsque les deux branches ont divergé, Git effectue une fusion à trois points (three-way merge), créant un nouveau commit de fusion avec deux parents :
git switch main
git merge feature -m "Merge feature"Le drapeau -m définit le message du commit de fusion sans ouvrir d'éditeur. Git fusionne automatiquement tant que les deux branches ont modifié des lignes différentes.
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Gestion de versions
4Inspecter les modifications
Git DiffComparer les modifications indexéesGit ShowRécapitulatif - Travail d'enquête2Premiers pas
Initialiser un dépôtLe dossier .gitConfigurer votre identitéGit StatusRécapitulatif - Premier dépôt5Ignorer des fichiers
Pourquoi ignorer des fichiersModèles GitignoreVérifier les règles d'exclusionRécapitulatif - Dépôt propre8La fusion
Qu'est-ce qu'une fusion ?Fusion Fast-ForwardFusion à trois voiesConflits de fusionRésoudre un conflitRécapitulatif - Maître de la fusion3Suivi des modifications
La zone de transitGit AddGit CommitModifier un fichier suiviGit LogRécapitulatif - Premiers commits6Projet de site de recettes
Aperçu du projetInitialiser et ignorer