Il y a 4 fichiers impliqués:
$LOCALLe fichier sur la branche où vous fusionnez; non touché par le processus de fusion lorsqu'il vous est montré
$REMOTELe fichier sur la branche à partir de laquelle vous fusionnez; non touché par le processus de fusion lorsqu'il vous est montré
$BASEL'ancêtre commun de $ LOCAL et $ REMOTE, ie. le point où les deux branches ont commencé à détourner le fichier considéré; non touché par le processus de fusion lorsqu'il vous est montré
$MERGEDLe fichier partiellement fusionné, avec des conflits; c'est le seul fichier touché par le processus de fusion et, en fait, ne vous a jamais été montré dansmeld
Le $MERGEDfichier est celui qui contient les <<<<<<, >>>>>>, =====(et, peut - être, ||||||) des marqueurs (que des conflits de délimiter). Il s'agit du fichier que vous modifiez manuellement pour corriger les conflits.
L'édition manuelle des conflits et l'édition des conflits visuels se font sur différents fichiers et présentent des informations différentes.
Lorsque vous utilisez le mergetool (on suppose meld), les fichiers qui y voient sont: $LOCAL, $BASE, $REMOTE. Notez que vous ne voyez pas le $MERGEDfichier, bien qu'il soit passé comme paramètre caché pour meldy écrire le résultat de la modification.
En d'autres termes, dans meld, vous éditez le fichier au milieu, le $BASEfichier, et vous sélectionnez manuellement toutes les modifications de gauche ou de droite . C'est un fichier propre, non touché par le processus de fusion. Le seul problème est que, lorsque vous enregistrez, vous ne sauvegardez pas dans le $BASEfichier, mais dans le quatrième paramètre caché de meld, c'est-à-dire le $MERGEDfichier (que vous ne voyez même pas). Le $BASEfichier ne pas contient aucun conflit ou se confond avec succès partiel , car il est pas le $MERGEDfichier .
Dans l'édition visuelle, lorsque vous vous présentez, le $BASEfichier (au lieu du $MERGEDfichier) gitrejette fondamentalement toutes ses tentatives de fusion (ces tentatives sont visibles, si vous le souhaitez, dans le fichier $ MERGED) et vous permet d' effectuer complètement la fusion. à partir de zéro .
L'essentiel est que dans les conflits de fusion manuels et visuels, vous ne regardez pas les mêmes fichiers, mais le résultat final est écrit dans le même fichier (c'est-à-dire le $MERGEDfichier).
La correction manuelle des conflits se fait sur , $MERGEDcar git n'a pas moyen de vous présenter trois fichiers, il écrase les informations des trois fichiers ( $LOCAL, $BASE, $REMOTE) dans ce $MERGEDfichier.
Mais les outils visuels ont les moyens de vous montrer trois fichiers: ils vous montrent les $LOCAL, $BASE, les $REMOTEfichiers. Vous ramassez des changements $LOCALet des $REMOTEfichiers et vous apportez ceux dans le $BASEfichier, complètement re-construction et même la tentative avortée d' écraser la fusion qui est le $MERGEDfichier.
merge.conflictstyleoption de configuration est définie sur audiff3lieu de la valeur par défautmerge.