Scalanie rozwiązywania konfliktów
Gdy w Git występuje konflikt scalania, do plików będących w konflikcie wstawiane są śmieci, takie jak poniższe. Trzy pytania:
- Jak czytasz te adnotacje?
- jakie strategie należy stosować przy rozwiązywaniu tych konfliktów scalania?
- czy istnieje narzędzie GUI dla komputerów Mac, które wie, jak czytać te pliki i wyświetlać dwie wersje obok siebie, aby ułatwić rozwiązanie problemu?
Uwaga: w przypadku, gdy jest to istotne, używam GitHub Mac Klient GUI.
5 answers
Wszystko pomiędzy <<<<<<
i ======
pochodzi z rewizji HEAD
, która jest stanem zatwierdzonym przed rozpoczęciem operacji scalania (git merge
będzie narzekać, jeśli drzewo jest brudne, więc powinno być równoważne z Twoim katalogiem roboczym).
Części pomiędzy ======
i >>>>>>
pochodzą z wersji, która jest scalana. Tekst po >>>>>>
jest komentarzem commita, który wprowadził sprzeczne zmiany.
Że istnieje znacznik konfliktu oznacza, że podstawowa wersja tej części plik różni się od obu "nowych" wersji. Wersja podstawowa (ostatni wspólny przodek) nie jest wyświetlana.
Jeśli chcesz bardziej komfortowe połączenie i mieć dostępne GUI, proponuję rzucić okiem na kdiff3.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 08:10:03
Jest teraz lepsze rozwiązanie niż próba odczytania bełkotliwych znaczników, które Git wstawia do Twoich plików. Kaleidoscope 2 , drugie wydanie Black Pixel ' a ich narzędzia diff, jest teraz również narzędziem scalania. Nie jest darmowy, ale działa pięknie.
Po zainstalowaniu Kaleidoscope 2, integracja z Gitem jest bardzo prosta. Otwórz Kalejdoskop i z paska Menu wybierz Kalejdoskop > Integracja ...
Wtedy zobaczysz to okno. Po prostu wybierz Git z lewej nav, a następnie zainstalujksdiff
narzędzie wiersza poleceń, a następnie utwórz domyślne narzędzie Kalejdoskop Git do różnicowania i scalania.
Na koniec, gdy masz konflikt scalania w Git, po prostu przejdź do linii poleceń i wykonaj git mergetool
. Teraz konflikt jest łatwy do odczytania. Smacznego.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-26 19:19:01
<<<< HEAD #Where the conflict starts
#Previous Revision
========== # The point where things look iffy
#Things that changed
>>>>> New Commit # Point where the conflict ends
Xcode Maca jest wyposażony w FileMerge, do którego można uzyskać dostęp w wierszu poleceń za pomocą opendiff
.
git mergetool -t opendiff
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 08:19:05
Możesz skonfigurować (graficzne) narzędzie scalające i użyć tego narzędzia do rozwiązywania konfliktów.
Spójrz również na polecenie git mergetool
- jeśli masz zainstalowane jedno z predefiniowanych narzędzi lub skonfigurowałeś inne narzędzie, otworzy ono narzędzie do rozdzielczości http://schacon.github.com/git/git-mergetool.html
Jeśli jesteś zainteresowany narzędziami GUI, nie musisz się martwić o to, co naprawdę znaczą notacje, ponieważ narzędzie GUI pomoże Ci łatwo zrobić uchwały. Po prostu zrozum, że części oznaczone =====
i >>>>>
są sekcjami konfliktu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 08:19:39
Gdy masz dwie gałęzie ze zmianami w tym samym pliku i spróbujesz je scalić, pojawi się konflikt scalania. Aby zobaczyć listę skonfliktowanych plików uruchom git status
na terminalu.
Skonfliktowane linie plików będą oznaczone wskaźnikami wizualnymi:
<<<<<
- konflikt zaczyna się po tej linii.
=====
- Devides zmienia się z HEAD i merging_branch.
>>>>>
- Koniec linii konfliktowych.
<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch
Kiedy naprawisz skonfliktowane pliki i będziesz gotowy do scalenia, wszystko, co musisz do uruchamia git add
i git commit
, aby wygenerować commit scalający. Gdy commit został wykonany, git push
zmiany w gałęzi.
Artykuł referencyjny: Git merge.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-22 12:08:46