Включено 4 файла:
$LOCALФайл в ветке, где вы объединяете; не тронут процесс слияния при показе вам
$REMOTEФайл на ветке, из которой вы сливаетесь; не тронут процесс слияния при показе вам
$BASEОбщий предок $ LOCAL и $ REMOTE, т.е. точка, в которой две ветви начали отклонять рассматриваемый файл; не тронут процесс слияния при показе вам
$MERGEDЧастично объединенный файл с конфликтами; это единственный файл, затронутый процессом слияния и, фактически, никогда не показанный вам вmeld
$MERGEDФайл является тот , который содержит <<<<<<, >>>>>>, =====(и, может быть, ||||||) маркер (которые отграничивают конфликты). Это файл, который вы редактируете вручную, чтобы исправить конфликты.
Ручное редактирование конфликтов и визуальное редактирование конфликтов выполняются для разных файлов и содержат различную информацию.
При использовании mergetool (предположим meld), файлы, которые видят в нем являются: $LOCAL, $BASE, $REMOTE. Обратите внимание, что вы не видите $MERGEDфайл, хотя он передается как скрытый параметр, meldчтобы записать в него результат редактирования.
Другими словами, meldвы редактируете файл посередине, $BASEфайл и выбираете все изменения слева или справа вручную . Это чистый файл, не затронутый процессом слияния. Единственный сбой в том, что при сохранении вы сохраняете не $BASEфайл, а четвертый скрытый параметр meld- $MERGEDфайл (который вы даже не видите). $BASEФайла не не содержит каких - либо конфликтов или частичное успешных слияний , потому что это не $MERGEDфайл .
При визуальном редактировании при представлении вам $BASEфайл (а не $MERGEDфайл) в gitосновном отбрасывает все его попытки выполнить слияние (эти попытки видны, если хотите, в файле $ MERGED) и позволяет вам полностью выполнить слияние с нуля .
Суть в том, что при конфликтах с ручным и визуальным слиянием вы не смотрите на одни и те же файлы, но конечный результат записывается в одном и том же файле (то есть $MERGEDфайле).
Ручная коррекция конфликтов делается на $MERGEDпотому , что git не имеет среднего представить вам три файла, поэтому он давит информацию из трех файлов ( $LOCAL, $BASE, $REMOTE) в этом $MERGEDфайле.
Но визуальные инструменты имеют средства , чтобы показать вам три файла: они показывают вам $LOCAL, $BASE, $REMOTEфайлы. Вы выбираете изменения от $LOCALи $REMOTEфайлов , и вы приносите те в $BASEфайл, полностью заново строить и даже перезапись неудачной попытки слияния , что является $MERGEDфайлом.
merge.conflictstyleустановлен параметр конфигурацииdiff3вместо значения по умолчаниюmerge.