W grę wchodzą 4 pliki:
$LOCAL
Plik w gałęzi, w której dokonujesz scalenia; po wyświetleniu nietknięte przez proces scalania
$REMOTE
Plik w gałęzi, z której dokonujesz scalenia; po wyświetleniu nietknięte przez proces scalania
$BASE
Wspólny przodek $ LOCAL i $ REMOTE, tj. punkt, w którym dwie gałęzie zaczęły przekierowywać rozpatrywany plik; po wyświetleniu nietknięte przez proces scalania
$MERGED
Częściowo scalony plik z konfliktami; jest to jedyny plik, którego dotyczył proces scalania i właściwie nigdy nie został wyświetlony w formaciemeld
$MERGED
Plik jest taki, który zawiera <<<<<<
, >>>>>>
, =====
(i, być może, ||||||
) (markery że konflikty wytyczają). To jest plik, który edytujesz ręcznie w celu naprawienia konfliktów.
Ręczna edycja konfliktów i wizualna edycja konfliktów odbywa się na różnych plikach i przedstawia różne informacje.
Podczas korzystania z mergetool (zakładając meld
), pliki, które widzą w nim to: $LOCAL
, $BASE
, $REMOTE
. Zwróć uwagę, że nie widzisz $MERGED
pliku, chociaż jest on przekazywany jako ukryty parametr meld
do zapisania tam wyniku edycji.
Innymi słowy, w programie meld
edytujesz plik w środku, $BASE
plik i ręcznie wybierasz wszystkie zmiany od lewej lub prawej strony . Jest to czysty plik, którego nie dotyczył proces scalania. Jedyna usterka polega na tym, że podczas zapisywania nie zapisujesz do $BASE
pliku, ale w czwartym ukrytym parametrze meld
, czyli $MERGED
pliku (którego nawet nie widzisz). $BASE
Plik ma nie zawierać żadnych konfliktów lub częściowe sukcesy scala ponieważ nie jest to $MERGED
plik .
W edycji wizualnej, podczas prezentacji $BASE
pliku (zamiast $MERGED
pliku) w git
zasadzie odrzuca wszystkie próby scalenia (te próby są widoczne, jeśli chcesz, w pliku $ MERGED) i pozwala na całkowite scalenie od podstaw .
Najważniejsze jest to, że podczas ręcznego i wizualnego łączenia konfliktów nie patrzysz na te same pliki, ale wynik końcowy jest zapisywany w tym samym pliku (to jest $MERGED
plik).
Instrukcja korekta konfliktów odbywa się na $MERGED
ponieważ git
ma nie lada zaprezentować trzy pliki, więc to zgniecie informacje z trzech plików ( $LOCAL
, $BASE
, $REMOTE
) w tym $MERGED
pliku.
Ale narzędzia wizualne mają środków , aby pokazać trzy pliki: oni pokazać $LOCAL
, $BASE
, $REMOTE
pliki. Jesteś zbierając od zmian $LOCAL
i $REMOTE
plików i przynoszą ci do $BASE
pliku, całkowicie re-building a nawet nadpisanie nieudanej próbie połączenia, które jest $MERGED
plik.
merge.conflictstyle
ustawioną opcję konfiguracjidiff3
zamiast domyślnejmerge
.