Задіяно 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
.