2012-02-09 24 views
54

Gdy w Git występuje konflikt scalania, do plików powodujących konflikt dołączane są takie śmieci, jak poniższe. Trzy pytania:Rozwiązywanie konfliktów łączenia

  1. Jak czytasz te adnotacje?
  2. Jakie są niektóre strategie, które należy zastosować podczas rozwiązywania konfliktów scalania?
  3. Czy istnieje narzędzie GUI dla systemu Mac, które wie, jak odczytać te pliki i wyświetlać dwie wersje obok siebie, aby ułatwić rozwiązanie problemu?

enter image description here

Uwaga: w przypadku, gdy jest to stosowne, Używam Mac GUI klienta na GitHub.

+1

możliwe duplikat [Jak naprawić scalić konfliktów w Git?] (Http://stackoverflow.com/questions/161813/how-do-i-fix-merge-conflicts-in-git) - link # 1 jeśli google "git scalanie konfliktów" –

Odpowiedz

20

Istnieje teraz lepsze rozwiązanie niż próba odczytania bełkotliwych znaczników, które Git wstawia do plików. Kaleidoscope 2, druga wersja narzędzia różnicowego Black Pixel, jest teraz także narzędziem scalania. To nie jest za darmo, ale działa pięknie.

Po zainstalowaniu Kaleidoscope 2, bardzo łatwo jest zintegrować go z Git.Kalejdoskop otwarte i na pasku menu wybierz Kaleidoscope>Integracja ...

Kaleidoscope's Integration menu option.

Wtedy zobaczysz to okno. Wystarczy wybrać Git z lewego panelu nawigacyjnego, a następnie zainstalować narzędzie wiersza polecenia ksdiff, a następnie ustawić domyślne narzędzie porównania i scalania Kalejdoskop Git.

Kaleidoscope's Git Integration dialog.

Wreszcie, gdy już konflikt scalania w Git, wystarczy przejść do wiersza poleceń i wykonywanie git mergetool. Teraz konflikt jest łatwy do odczytania. Cieszyć się.

Kaleidoscope sane view for merge conflicts.

+2

Zastanawiam się, jak oznaczyć rozstrzygnięty przez Kaleidoscope –

+1

@FrankFang wystarczy zamknąć okno, gdy wszystkie konflikty zostały rozwiązane. Zostaniesz zapytany, czy scalenie było w porządku. –

34

Wszystko pomiędzy <<<<<< i ====== pochodzi z rewizji HEAD, która jest zaangażowana stan przed rozpoczęciem operacji scalania (git merge będzie narzekać, jeśli drzewo jest brudny, więc powinno być równoważne do katalogu roboczego).

Części pomiędzy ====== i >>>>>> pochodzą z wersji, która jest łączona. Tekst po >>>>>> jest komentarzem zatwierdzenia, które wprowadziło sprzeczną zmianę.

To, że istnieje znacznik konfliktu, oznacza, że ​​podstawowa wersja tej części pliku różni się od obu "nowych" wersji. Wersja podstawowa (ostatni wspólny przodek) nie jest wyświetlana.

Jeśli chcesz wygodniej scalić i mieć dostępny GUI, proponuję przyjrzeć się kdiff3.

+0

Dzięki, Simon. Czy nie ma jakiejś aplikacji GUI, która może otworzyć te pliki i wyświetlać HEAD i scaloną wersję obok siebie? –

+0

Skorzystaj z linku sugerowanego przez @Brian powyżej .... –

+0

Czy możesz wskazać mi, które informacje w tym linku są przydatne? Instrukcja git jest dla mnie niedostępna. –

16
<<<< HEAD #Where the conflict starts 

#Previous Revision 

========== # The point where things look iffy 

#Things that changed 

>>>>> New Commit # Point where the conflict ends 

Mac Xcode wyposażony FileMerge które mogą być dostępne w linii poleceń z opendiff.

git mergetool -t opendiff

+2

Co to znaczy, że nic się nie zmieniło w # rzeczy, ale wciąż mam konflikt? – Ken

+0

git mergetool -t opendiff było dla mnie odpowiedzią. Dzięki. – Billy

4

Można skonfigurować (graficzny) scalać narzędzia i korzystać z tego narzędzia, aby wykonać rozwiązywania konfliktów.

Również spojrzeć na komendę git mergetool - jeśli masz jedną z predefiniowanych narzędzi zainstalowanych lub zostały skonfigurowane jakieś inne narzędzie, otworzy się narzędzie do rozpoznawania http://schacon.github.com/git/git-mergetool.html

Jeśli jesteś zainteresowany w GUI narzędzia, nie musisz martwić się o to, co oznaczają notacje, ponieważ narzędzie GUI pomoże ci z łatwością tworzyć rozwiązania. Rozumiem, że części oznaczone jako ===== i >>>>> są sekcjami konfliktu.

+1

Czy możesz podać przykład aplikacji Mac GUI, która może odczytać te pliki i wyjaśnić, jak je otworzyć? Próbowałem otwierać te pliki w różnych narzędziach do porównywania i łączenia, a one po prostu otwierają się jako pojedynczy plik tekstowy, zamiast interpretować go jako dwa pliki. (Który jest cały cel znaczników konfliktu.) –

Powiązane problemy