Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Résolution des Conflits de Fusion | Travailler avec les Branches dans Git
Essentiels de Git
course content

Contenu du cours

Essentiels de Git

Essentiels de Git

1. Introduction à Git
2. Interaction Plus Avancée
3. Annuler les Modifications
4. Travailler avec les Branches dans Git

book
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.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 6
We're sorry to hear that something went wrong. What happened?
some-alt