Aller au contenu principal

Prise en main de Git — Chapitre 4 / 4

Résoudre les conflits

Les conflits font peur à beaucoup de gens. Mais ils sont normaux. Ce chapitre t'apprend à les comprendre et à les résoudre calmement.

Chapitre 4 / 4

Étape 01 / 09

Un conflit, c'est quoi ?

Concept

Mot clé : conflit de merge Un conflit arrive quand deux branches ont modifié la même partie du même fichier. Git ne sait pas quelle version garder. Il te demande de choisir.

Imagine un document partagé. Toi et un collègue modifiez le même paragraphe en même temps. Le logiciel ne sait pas quelle version garder. Il vous demande de décider ensemble.

C'est exactement ce qui se passe avec Git. Un conflit n'est pas une erreur. C'est Git qui te dit : «je ne peux pas décider à ta place».

Concept

Point important Git résout automatiquement la plupart des fusions. Un conflit ne se produit que quand les mêmes lignes ont été modifiées dans les deux branches. Si deux branches modifient des fichiers différents, ou des parties différentes du même fichier, Git fusionne tout seul.

Étape 02 / 09

Quand un conflit arrive-t-il ?

Voici un exemple concret :

1

Tu crées une branche depuis main. Le fichier index.html contient : "Hello".

2

Sur ta branche, tu changes "Hello" en "Bonjour". Tu fais un commit avec ce changement.

3

Pendant ce temps, quelqu'un change "Hello" en "Welcome" sur main. Un commit est fait sur main avec ce changement.

4

Tu essaies de fusionner ta branche dans main. Git dit : "Conflit ! La même ligne a été changée des deux côtés."

Étape 03 / 09

Lire les marqueurs de conflit

Concept

Mot clé : marqueurs de conflit Quand un conflit se produit, Git ajoute des marqueurs dans le fichier. Ces marqueurs montrent les deux versions côte à côte. Ils commencent par <<<<<<< et finissent par >>>>>>>.

Voici à quoi ressemble un fichier avec un conflit :

$ <<<<<<< HEAD Le contenu de ta branche actuelle (HEAD) ======= Le contenu de l'autre branche >>>>>>> feature/header

Chaque marqueur a un rôle précis :

  • <<<<<<< HEAD — Début du conflit. Ce qui suit vient de ta branche (celle où tu es).
  • ======= — Séparateur. Il sépare les deux versions. Au-dessus : ta branche. En-dessous : l'autre branche.
  • >>>>>>> feature/header — Fin du conflit. Le nom après les flèches est le nom de l'autre branche.

Dans un conflit, quel marqueur sépare TES changements de ceux de l'autre branche ?

Étape 04 / 09

Résoudre un conflit : les 4 étapes

La résolution d'un conflit suit toujours les mêmes étapes. Pas de panique. Suis ce processus.

Étape 1 : Voir quels fichiers sont en conflit

Tape git status. Les fichiers en conflit apparaissent en rouge avec la mention "both modified".

$ git status

both modified: index.html

Étape 2 : Lire le fichier avec les marqueurs

Ouvre le fichier pour voir les deux versions. Dans le simulateur, utilise cat index.html.

Étape 3 : Écrire le contenu final

Supprime les marqueurs <<<<<<<, ======= et >>>>>>>. Garde la version que tu veux. Tu peux garder une version, l'autre, ou un mélange des deux.

$ # Dans le simulateur : echo "<footer>Version finale</footer>" > index.html

Étape 4 : Marquer comme résolu et commiter

Dis à Git que le conflit est résolu. Utilise git add pour marquer le fichier comme résolu. Puis fais un commit pour terminer la fusion.

$ git add index.html git commit -m "Resolve conflict"

Tu as édité le fichier en conflit et retiré les marqueurs. Ensuite ?

Étape 05 / 09

Annuler un merge en cours

Concept

Mot clé : git merge --abort Si tu es perdu pendant un conflit, tu peux tout annuler. La commande git merge --abort revient à l'état d'avant le merge. Rien n'est perdu. Tu peux recommencer quand tu es prêt.

$ git merge --abort

# Annule le merge en cours
# Tu reviens à l'état d'avant
# Tu peux réessayer quand tu veux

Quelle commande annule proprement un merge en cours ?

Étape 06 / 09

Comment réduire les conflits

Les conflits sont normaux. Mais tu peux les réduire avec quelques bonnes pratiques :

  • Fais des petits commits — Moins tu modifies de lignes, moins tu risques de conflit. Un commit = une action.
  • Fusionne souvent — Plus tu attends pour fusionner, plus les branches divergent. Plus elles divergent, plus les conflits sont probables.
  • Communique avec ton équipe — Si tu sais que quelqu'un travaille sur le même fichier, coordonne-vous. C'est le meilleur moyen d'éviter les surprises.
  • Découpe ton code en petits fichiers — Plus les fichiers sont petits, moins il y a de chances que deux personnes modifient le même.

Étape 07 / 09

Erreurs fréquentes

  • Laisser les marqueurs <<<<<<< dans le code. Le fichier ne fonctionnera pas avec les marqueurs dedans. Tu dois les supprimer.
  • Faire git add + git commit sans vérifier le contenu du fichier. Lis toujours le fichier après avoir résolu le conflit.
  • Supprimer le contenu de l'autre personne sans le lire. Prends le temps de comprendre les deux versions avant de choisir.
  • Paniquer et toujours faire git merge --abort. C'est bien de savoir que ça existe. Mais résoudre un conflit est une compétence importante.

Étape 08 / 09

Pour aller plus loin

  • Guide complet : résoudre un conflit de merge
  • git rebase : une alternative au merge
  • git stash : mettre de côté son travail temporairement
  • Formation Confiance Git : la prochaine étape

Étape 09 / 09

Teste tes connaissances

Avant de passer aux exercices, vérifie que tu sais résoudre un conflit. Clique sur la réponse qui te semble correcte.

Quiz — Chapitre 4

1. Quand un conflit de merge se produit-il ?

2. Que signifie le marqueur ======= dans un fichier en conflit ?

3. Après avoir résolu un conflit dans un fichier, que fais-tu ?

4. Que fait git merge --abort ?

Ton avis compte

Aide-nous à améliorer cette formation en partageant ton retour.

Pour qu'on puisse te répondre si besoin.