Jak interaktywnie (wizualnie) rozwiązywać konflikty w SourceTree / git

119

Używam (Windows) SourceTree do mojego projektu git. Mogę to zrobić w wierszu poleceń lub terminalu Linux.

Zastanawiam się jednak, czy istnieje dobry sposób na interaktywne i wizualne rozwiązywanie konfliktów. Na przykład, jeśli pull wykryje konflikty, wyskakuje narzędzie konfliktu oparte na GUI (np. P4Merge). Czy to możliwe?

Zawsze rozwiązuję konflikty ręcznie, co jest po prostu bolesne.

Na przykład jest to pullwiadomość git z SourceTree.

git -c diff.mnemonicprefix=false -c core.quotepath=false pull --no-commit origin master
From W:\repo\
 * branch            master     -> FETCH_HEAD   

Updating 33c07bf..41e0249

error: Your local changes to the following files would be overwritten by merge:
    foo.cpp
    goo.cpp
    goo.hpp
Please, commit your changes or stash them before you can merge.
Aborting    

Completed with errors, see above.
Nullptr
źródło

Odpowiedzi:

135

W SourceTree, kliknij Narzędzia-> Opcje. Następnie na karcie „Ogólne” upewnij się, że jest zaznaczone pole, aby umożliwić SourceTree modyfikowanie plików konfiguracyjnych Git.

Następnie przejdź do zakładki „Różnica”. W dolnej połowie użyj listy rozwijanej, aby wybrać zewnętrzny program, którego chcesz użyć do wykonywania różnic i scalania. Zainstalowałem KDiff3 i podoba mi się to. Kiedy skończysz, kliknij OK.

Teraz, gdy jest scalanie, możesz przejść do Akcje-> Rozwiąż konflikty-> Uruchom zewnętrzne narzędzie scalające.

gtrig
źródło
4
Próbowałem tego, ale na koniec nie widzę innego wyjścia niż porównanie. Widzę porównanie generowanych plików, ale to wszystko. Nie mogę rozwiązać konfliktu. Zmiana tego na standardowe / domyślne porównanie też nie wydaje się pomagać.
Echiban
1
@echiban Prawdopodobnie masz standardową licencję na Beyond Compare, która nie akceptuje 3-way scalania. Musisz być profesjonalistą, aby używać go jako git
Mergetool
6
Po wykonaniu wszystkich kroków, aby skonfigurować "Uruchom zewnętrzne narzędzie scalania" jest nadal przyciemnione, nie ma możliwości jego aktywacji
pal4life
2
Nie wybierałem również pliku konfliktu scalania, raz to zrobiłem - poszło dobrze
pal4life
2
Musiałem kliknąć element „Niezatwierdzone zmiany” na liście zmian, zanim zniknął on z szarego koloru.
Micah Zoltu
11

Używam SourceTree wraz z TortoiseMerge / Diff, które jest bardzo łatwym i wygodnym narzędziem porównywania / scalania.

Jeśli chcesz go również używać, to:

  1. Zdobądź samodzielną wersję TortoiseMerge / Diff (dość starą, ponieważ nie jest dostarczana jako samodzielna wersja od wersji 1.6.7 TortosieSVN, czyli od lipca 2011). Linki i szczegóły w tej odpowiedzi .

  2. Rozpakuj TortoiseIDiff.exei TortoiseMerge.exedo dowolnego folderu ( c:\Program Files (x86)\Atlassian\SourceTree\extras\w moim przypadku).

  3. W SourceTree otwarte Tools > Options > Diff > External Diff / Merge. Wybierz TortoiseMergez obu list rozwijanych.

  4. Hit OKi wskaż SourceTree na swoją lokalizację TortoiseIDiff.exei TortoiseMerge.exe.

Następnie możesz wybrać Resolve Conflicts > Launch External Merge Toolz menu kontekstowego każdy plik będący w konflikcie w lokalnym repozytorium. Otworzy się TortoiseMerge, gdzie możesz łatwo poradzić sobie ze wszystkimi konfliktami, które masz. Po zakończeniu po prostu zamknij TortoiseMerge (nie musisz nawet zapisywać zmian, prawdopodobnie zostanie to zrobione automatycznie) i po kilku sekundach SourceTree powinno to z wdziękiem obsłużyć.

Jedynym problemem jest to, że automatycznie tworzy kopię zapasową, mimo że nie jest zaznaczona odpowiednia opcja .

trejder
źródło
4

Gdy menu Rozwiązywanie konfliktów-> Zawartość jest wyłączone, jeden z nich może znajdować się na liście plików oczekujących. Musimy wybrać opcję Pliki w konflikcie z listy rozwijanej (u góry)

mam nadzieję, że to pomoże

ozkary
źródło