Quand deux branches modifient les mêmes lignes du même fichier, Git ne peut pas fusionner automatiquement et te demande de trancher. La résolution de conflit fait peur la première fois, beaucoup moins la deuxième.
Comment un conflit se produit
Imagine : sur main, la ligne 1 de README.md dit "Bienvenue". Sur ta branche ma-feature, tu l'as changée en "Salut". Entre-temps, quelqu'un sur main l'a changée en "Bonjour". Git ne sait pas laquelle garder.
Quand tu lances le merge :
Git s'arrête avec un message CONFLICT (content): Merge conflict in README.md.
Lire les marqueurs de conflit
Ouvre le fichier en conflit. Tu vois quelque chose comme ça :
<<<<<<< HEAD
Bonjour
=======
Salut
>>>>>>> ma-feature<<<<<<< HEAD: début du bloc en conflit, version de la branche courante (icimain).=======: séparateur entre les deux versions.>>>>>>> ma-feature: fin du bloc, version de la branche entrante.
Résoudre le conflit
Tu édites le fichier manuellement pour garder ce que tu veux. Supprime les trois marqueurs et écris la version finale :
Bienvenue et bonjourOu garde l'une des deux versions, ou écris quelque chose de complètement différent. C'est toi qui décides.
Finaliser la résolution
Une fois tous les fichiers en conflit édités, tu les stages et tu commites :
Git génère automatiquement un message de merge commit, tu peux l'accepter ou le modifier.
Pour voir quels fichiers sont encore en conflit à tout moment :
Les fichiers en conflit apparaissent sous "both modified". Tant qu'il en reste, le merge n'est pas terminé.
Abandonner un merge en cours
Si tu réalises que tu t'es trompé d'approche et veux tout annuler :
Git restaure l'état exact d'avant le merge. Rien n'est perdu.
git-scm.com - git merge