Aller au contenu principal

Se connecter

Sauvegarde ta progression et retrouve-la sur tous tes appareils.

Ou par email

Pas encore de compte ?

Politique de confidentialité

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.

Un conflit, c'est quoi ?

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.

Guide complet sur les conflits de merge →

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

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.

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

Lire les marqueurs de conflit

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.

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.

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

2

Lire le fichier avec les marqueurs

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

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

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"

Annuler un merge en cours

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

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.

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.

Ton avis compte

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

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