Contenu du cours
Essentiels de Git
Essentiels de Git
Résolution des Conflits de Fusion
Résolution des Conflits
Dans le chapitre précédent, nous avons rencontré un conflit de fusion, il est donc temps de le résoudre. Ouvrons d'abord notre fichier branch_learning.txt
avec l'éditeur Vim en utilisant la commande suivante :
Si vous n'avez pas Vim installé, vous pouvez utiliser d'autres éditeurs de texte, tels que nano ou atom (remplacez vim
par le nom de votre éditeur de texte dans la commande ci-dessus). Cependant, nous vous recommandons fortement d'utiliser Vim car il vous sera beaucoup plus facile de suivre.
Voici notre fichier ouvert dans l'éditeur Vim :
Maintenant, nous pouvons voir des marqueurs indiquant les sections en conflit. Ces marqueurs sont représentés par des flèches et des symboles spéciaux pour mettre en évidence les changements conflictuels provenant de différentes branches. Les marqueurs de conflit sont les suivants:
<<<<<<< HEAD
: Indique le début des changements de la branche actuelle (master
dans notre cas);=======
: Sépare les changements de la branche actuelle (HEAD) et les changements de la branche en cours de fusion;>>>>>>> feature/new-feature
: Marque la fin des changements de la branche en cours de fusion.
Pour résoudre les conflits, nous pouvons soit sélectionner le changement de la branche actuelle (master
), sélectionner le changement de la branche en cours de fusion (feature/new-feature
) ou modifier manuellement les changements.
Modifions manuellement les changements en combinant les changements des deux branches en suivant les étapes suivantes:
1. Entrer en mode Édition
Tout d'abord, nous devons entrer en mode insertion (édition) dans Vim en appuyant sur i
. Cela vous permet de modifier le texte.
2. Modifier la Section en Conflit
Ensuite, nous allons combiner les lignes des deux branches l'une après l'autre, de sorte que le contenu résultant du fichier soit le suivant:
3. Quitter le mode édition, enregistrer et quitter :
Pour quitter le mode insertion, nous devons appuyer sur la touche Échap. Ensuite, pour enregistrer les modifications et quitter, nous taperons :wq
et appuierons sur la touche Entrée :
Validation du fichier
Puisque nous avons résolu les conflits, ajoutons maintenant le branch_learning.txt
à la zone de staging et vérifions le statut :
Le fichier a été modifié et a bien été ajouté à la zone de staging. Nous pouvons maintenant procéder à son commit :
Encore une fois, l'éditeur de texte par défaut s'ouvre (Vim dans mon cas) avec le message de commit par défaut concernant le merge :
Entrons dans le mode insertion dans Vim en appuyant sur i
et modifions ce message en ajoutant la ligne suivante : Kept lines from both branches
pour spécifier la manière dont nous avons résolu les conflits. Voici le message de commit complet :
Pour quitter le mode insertion, enregistrer les modifications et quitter Vim, nous devons appuyer sur la touche Échap puis taper :wq
et appuyer sur la touche Entrée.
Le commit est réussi, et le conflit de fusion est maintenant résolu.
Regardons maintenant notre historique des commits sous forme de graphe (option --graph
) avec une ligne par commit (option --oneline
) :
Ici, nous pouvons voir notre dernier commit de fusion et la forme caractéristique d'une fusion à trois voies.
Merci pour vos commentaires !