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:

  1. Jak czytasz te adnotacje?
  2. jakie strategie należy stosować przy rozwiązywaniu tych konfliktów scalania?
  3. 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?

Tutaj wpisz opis obrazka

Uwaga: w przypadku, gdy jest to istotne, używam GitHub Mac Klient GUI.

Author: Chris Calo, 2012-02-09

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.

 35
Author: Simon Richter,
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 ...

Opcja menu integracyjnego kalejdoskopu.

Wtedy zobaczysz to okno. Po prostu wybierz Git z lewej nav, a następnie zainstaluj ksdiff narzędzie wiersza poleceń, a następnie utwórz domyślne narzędzie Kalejdoskop Git do różnicowania i scalania.

Okno dialogowe integracji Git kalejdoskopu.

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.

Kalejdoskop sane view for merge conflicts.

 21
Author: Chris Calo,
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

 16
Author: sparrow,
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.

 4
Author: manojlds,
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.

 0
Author: Nesha Zoric,
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