Il y a 4 fichiers impliqués:
$LOCAL
Le fichier sur la branche où vous fusionnez; non touché par le processus de fusion lorsqu'il vous est montré
$REMOTE
Le fichier sur la branche à partir de laquelle vous fusionnez; non touché par le processus de fusion lorsqu'il vous est montré
$BASE
L'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é
$MERGED
Le 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 $MERGED
fichier 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 $MERGED
fichier, bien qu'il soit passé comme paramètre caché pour meld
y écrire le résultat de la modification.
En d'autres termes, dans meld
, vous éditez le fichier au milieu, le $BASE
fichier, 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 $BASE
fichier, mais dans le quatrième paramètre caché de meld
, c'est-à-dire le $MERGED
fichier (que vous ne voyez même pas). Le $BASE
fichier ne pas contient aucun conflit ou se confond avec succès partiel , car il est pas le $MERGED
fichier .
Dans l'édition visuelle, lorsque vous vous présentez, le $BASE
fichier (au lieu du $MERGED
fichier) git
rejette 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 $MERGED
fichier).
La correction manuelle des conflits se fait sur , $MERGED
car git
n'a pas moyen de vous présenter trois fichiers, il écrase les informations des trois fichiers ( $LOCAL
, $BASE
, $REMOTE
) dans ce $MERGED
fichier.
Mais les outils visuels ont les moyens de vous montrer trois fichiers: ils vous montrent les $LOCAL
, $BASE
, les $REMOTE
fichiers. Vous ramassez des changements $LOCAL
et des $REMOTE
fichiers et vous apportez ceux dans le $BASE
fichier, complètement re-construction et même la tentative avortée d' écraser la fusion qui est le $MERGED
fichier.
merge.conflictstyle
option de configuration est définie sur audiff3
lieu de la valeur par défautmerge
.