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 d'où vous fusionnez ; non touché par le processus de fusion lorsqu'il vous est montré
-
$BASE
L'ancêtre commun de $LOCAL et $REMOTE, c'est-à-dire 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 les conflits ; c'est le seul fichier qui a été touché par le processus de fusion et, en fait, qui ne vous a jamais été montré dans le cadre du processus de fusion. meld
El $MERGED
est celui qui contient le fichier <<<<<<
, >>>>>>
, =====
(et, peut-être, ||||||
) (qui délimitent les conflits). Ce site est le fichier que vous modifiez manuellement pour corriger les conflits.
L'édition manuelle des conflits et l'édition visuelle des conflits se font sur des fichiers différents et présentent des informations différentes.
Lors de l'utilisation du mergetool (supposer meld
), les fichiers qui s'y trouvent sont les suivants : $LOCAL
, $BASE
, $REMOTE
. Notez que vous ne voyez pas le $MERGED
bien qu'il soit transmis en tant que paramètre caché à la fonction meld
pour y écrire le résultat de la modification.
En d'autres termes, en meld
si vous éditez le fichier au milieu, la fonction $BASE
et vous prenez tous les changements à gauche ou à droite. manuellement . Il s'agit d'un fichier propre, non touché par le processus de fusion. Le seul problème est que, lorsque vous enregistrez, vous n'enregistrez pas dans le fichier $BASE
mais dans le quatrième paramètre caché de meld
c'est-à-dire le $MERGED
(que vous ne voyez même pas). Le site $BASE
Le fichier fait no contiennent des conflits ou des fusions partielles réussies parce que ce n'est pas le $MERGED
fichier .
Dans le montage visuel, en vous présentant les $BASE
(au lieu du fichier $MERGED
fichier) git
abandonne toutes ses tentatives de fusion (ces tentatives sont visibles, si vous le souhaitez, dans le fichier $MERGED) et vous permet de complètement faire la fusion à partir de zéro .
En fin de compte, dans les conflits de fusion manuelle et visuelle, vous ne regardez pas les mêmes fichiers, mais le résultat final est écrit dans le même fichier (c'est le $MERGED
).
La correction manuelle des conflits se fait sur $MERGED
parce que git
n'a pas de sens pour vous présenter trois fichiers, il écrase donc les informations des trois fichiers ( $LOCAL
, $BASE
, $REMOTE
) en ce que $MERGED
fichier.
Mais les outils visuels avoir les moyens pour vous montrer trois fichiers : ils vous montrent les $LOCAL
, $BASE
, $REMOTE
des fichiers. Vous reprenez les modifications du $LOCAL
y $REMOTE
et vous les apportez dans le $BASE
en reconstruisant complètement et même en écrasant la tentative ratée de fusion qu'est le fichier $MERGED
fichier.