web-dev-qa-db-fra.com

comment se produit exactement un conflit de fusion git?

J'ai créé un référentiel git et y ai ajouté un fichier texte. C'est 100% à des fins d'apprentissage.

  1. J'ai ajouté "1" au fichier texte et je l'ai validé à maîtriser.

  2. Création d'une nouvelle branche à partir du maître et ajout du "2".

  3. Enfin, créé une branche à partir du maître et ajouté "3".

Pourriez-vous expliquer comment un conflit peut survenir dans ce scénario ou dans tout autre scénario?

35
user3693167

Vous aurez un conflit si vous fusionnez:

  • branch2 à master (pas de conflit)
  • branch3 à master (conflit):

C'est parce que:

  • L'ancêtre commun serait master (avec une deuxième ligne vide)
  • le contenu source est branch3 (avec une deuxième ligne comprenant "3")
  • le contenu de destination est au plus tard le master (avec une deuxième ligne incluant "2", à partir de la fusion de branch2 à master)

Git vous demandera de choisir le contenu à conserver ("3", "2", ou les deux).

Tout d'abord, effectuez les fusions après:

git config merge.conflictstyle diff3

Voir " Correction des conflits de fusion dans Git? ".

28
VonC

Un conflit de fusion se produit lorsque deux branches modifient toutes deux la même région d'un fichier et sont ensuite fusionnées. Git ne peut pas savoir lequel des changements conserver, et a donc besoin d'une intervention humaine pour résoudre le conflit.

Dans ce cas, vos étapes 2 et 3 créent deux branches qui ont des modifications conflictuelles.

32
Caleb