Skip to content

Fusionner des Branches et Résoudre les Conflits

Une fois votre travail validé sur une branche secondaire (comme feature-contact), vous souhaitez réintégrer ces changements dans la branche principale (main). Cette opération s’appelle une fusion (merge).

Pour fusionner, vous devez toujours vous placer sur la branche qui va recevoir les modifications, puis appeler la branche qui contient le nouveau code.

gitGraph
    commit id: "Initial commit"
    branch feature-contact
    checkout feature-contact
    commit id: "Formulaire de contact"
    checkout main
    merge feature-contact id: "Fusion de feature-contact"

Exercice Pratique : Fusionner vos modifications

Section titled “Exercice Pratique : Fusionner vos modifications”

Suivez les instructions du simulateur interactif pour fusionner la branche feature-contact dans main et observez le résultat final :

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Un conflit survient lorsque deux branches ont modifié la même ligne du même fichier de manière différente, et que vous tentez de les fusionner. Git ne sait pas quelle version choisir et vous demande de trancher manuellement.

Lorsque vous ouvrez un fichier en conflit, Git y insère des marqueurs spéciaux :

<<<<<<< HEAD
<h1>Bienvenue sur HashCode Workshops</h1>
=======
<h1>Bienvenue sur notre académie technique</h1>
>>>>>>> feature-titre

Comprendre les marqueurs :

  • <<<<<<< HEAD : Début de la version présente sur votre branche actuelle (où vous vous trouvez, ex: main).
  • ======= : Séparateur entre les deux versions en conflit.
  • >>>>>>> feature-titre : Fin de la version présente sur la branche que vous tentez de fusionner.

Ne paniquez pas, la résolution est simple si vous suivez ces étapes :

  1. Ouvrez le fichier en conflit dans votre éditeur (ex: VS Code).
  2. Setup / Analyse des deux propositions et choisissez celle à conserver (ou écrivez une combinaison des deux).
  3. Supprimez les lignes de marqueurs (<<<<<<<, =======, >>>>>>>).
  4. Enregistrez le fichier.
  5. Ajoutez le fichier résolu à la Staging Area :
    Terminal window
    git add <nom-du-fichier>
  6. Finalisez le commit de fusion :
    Terminal window
    git commit -m "Résolution du conflit de titre"

Entraînez-vous à retenir les concepts clés en cliquant sur les cartes ci-dessous :

Question

Quelle est la différence entre un fast-forward et un merge à trois branches ?

Cliquer pour révéler la réponse
Réponse

Le fast-forward déplace simplement le pointeur de la branche quand il n'y a pas de divergences. Le merge à trois branches (3-way) crée un commit de fusion supplémentaire lorsque les branches ont divergé.

Cliquer pour voir la question
Question

Quand un conflit de fusion survient-il ?

Cliquer pour révéler la réponse
Réponse

Un conflit survient lorsque deux branches ont modifié la même ligne du même fichier de manière différente et que Git ne peut pas choisir automatiquement quelle version conserver.

Cliquer pour voir la question
Question

Quels sont les trois marqueurs de conflit insérés par Git ?

Cliquer pour révéler la réponse
Réponse

<<<<<<< HEAD (version actuelle), ======= (séparateur), >>>>>>> nom-de-branche (version entrante).

Cliquer pour voir la question
Question

Quelles sont les étapes pour résoudre un conflit ?

Cliquer pour révéler la réponse
Réponse

Ouvrir le fichier, choisir la version à conserver ou combiner les deux, supprimer les marqueurs, enregistrer, exécuter git add puis git commit.

Cliquer pour voir la question

1. Sur quelle branche devez-vous vous placer AVANT de lancer git merge ?

2. Quand un conflit Git survient-il ?

3. Après avoir résolu un conflit manuellement, quelles commandes devez-vous exécuter ?


Vous maîtrisez Git en local ! Il est temps de passer au niveau supérieur et de connecter votre dépôt local à GitHub pour collaborer avec le monde entier.

Étape suivante : Collaborer sur GitHub