W grę wchodzą 4 pliki:
$LOCALPlik w gałęzi, w której dokonujesz scalenia; po wyświetleniu nietknięte przez proces scalania
$REMOTEPlik w gałęzi, z której dokonujesz scalenia; po wyświetleniu nietknięte przez proces scalania
$BASEWspó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
$MERGEDCzęś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
$MERGEDPlik 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 $MERGEDpliku, chociaż jest on przekazywany jako ukryty parametr melddo zapisania tam wyniku edycji.
Innymi słowy, w programie meldedytujesz plik w środku, $BASEplik 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 $BASEpliku, ale w czwartym ukrytym parametrze meld, czyli $MERGEDpliku (którego nawet nie widzisz). $BASEPlik ma nie zawierać żadnych konfliktów lub częściowe sukcesy scala ponieważ nie jest to $MERGEDplik .
W edycji wizualnej, podczas prezentacji $BASEpliku (zamiast $MERGEDpliku) w gitzasadzie 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 $MERGEDplik).
Instrukcja korekta konfliktów odbywa się na $MERGEDponieważ git ma nie lada zaprezentować trzy pliki, więc to zgniecie informacje z trzech plików ( $LOCAL, $BASE, $REMOTE) w tym $MERGEDpliku.
Ale narzędzia wizualne mają środków , aby pokazać trzy pliki: oni pokazać $LOCAL, $BASE, $REMOTEpliki. Jesteś zbierając od zmian $LOCALi $REMOTEplików i przynoszą ci do $BASEpliku, całkowicie re-building a nawet nadpisanie nieudanej próbie połączenia, które jest $MERGEDplik.
merge.conflictstyleustawioną opcję konfiguracjidiff3zamiast domyślnejmerge.