Mémo Git · Intégrer

Résoudre un conflit

git add <fichier> (après édition)

Un conflit arrive quand deux branches modifient les mêmes lignes : Git ne sait pas laquelle garder et s'arrête. Il marque chaque zone dans le fichier. Tu choisis le bon contenu, tu supprimes les marqueurs, tu indexes le fichier avec git add, puis tu termines le merge ou le rebase.

Ce que ça fait

Quand deux branches modifient les mêmes lignes, git s'arrête et te demande quelle version garder.

Un cas d'usage

Pendant un merge, un collègue et toi avez modifié la même fonction.

En ligne de commande

<<<<<<< HEAD … ======= … >>>>>>> <branche>
En haut ta version, en bas la version entrante.
git status
Liste les fichiers en conflit (« both modified »).
git checkout --ours <fichier> / --theirs <fichier>
Garde entièrement une des deux versions.
git add <fichier>
Marque le conflit comme résolu.
git commit · git rebase --continue
Termine le merge, ou reprend le rebase.

Dans Merathon

  1. Les fichiers concernés apparaissent dans la section « Conflits » du panneau de droite.
  2. Clique sur un fichier : chaque bloc montre « Actuel (HEAD) » et « Entrant » côte à côte.
  3. Clique sur la version à garder, ou « Garder les deux », puis « Résoudre et indexer ».
  4. Une fois tous les conflits résolus, commite (merge) ou clique sur « Continuer » (rebase).

Questions fréquentes

Pendant un rebase, quelle version est « ours » ?

C'est l'inverse du merge : « ours » est la branche sur laquelle tu rebases, « theirs » est ton commit en cours de rejeu.

Comment éviter les conflits ?

Mets ta branche à jour souvent, fais des pull requests courtes, et évite de reformater des fichiers entiers dans le même commit qu'un changement de fond.

Voir aussi