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

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

Ale zastanawiam się, czy jest dobry sposób na interaktywne i wizualne rozwiązywanie konfliktów. Na przykład, jeśli pull wykryje konflikty, pojawi się narzędzie do konfliktów oparte na interfejsie GUI (np. P4Merge). Czy to możliwe? Zawsze zajmuję się ręcznym rozwiązywaniem konfliktów, co jest po prostu bolesne.

Jest to na przykład wiadomość git pull 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.
Author: Camilo Martinez, 2013-05-28

3 answers

Z SourceTree, kliknij Tools - > Options. Następnie w zakładce "Ogólne" zaznacz pole, aby umożliwić SourceTree modyfikowanie plików konfiguracyjnych Git.

Następnie przejdź do zakładki "Diff". W dolnej części użyj rozwijanej listy, aby wybrać zewnętrzny program, którego chcesz użyć do wykonywania różnic i scalania. Zainstalowałem KDiff3 i bardzo mi się podoba. Po zakończeniu kliknij OK.

Teraz, gdy dojdzie do scalenia, możesz przejść do sekcji akcje->rozwiązywanie konfliktów- > Uruchom zewnętrzny Narzędzie Scalania.

 119
Author: gtrig,
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
2013-10-22 18:30:21

Używam SourceTree wraz z TortoiseMerge / Diff, który jest bardzo łatwym i wygodnym narzędziem do różnicowania/scalania.

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

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

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

  3. W SourceTree open Tools > Options > Diff > External Diff / Merge. Wybierz TortoiseMerge z obu list rozwijanych.

  4. Kliknij OK i wskaż SourceTree do swojej lokalizacji TortoiseIDiff.exe i TortoiseMerge.exe.

Następnie możesz wybrać Resolve Conflicts > Launch External Merge Tool z menu kontekstowego na każdym skonfliktowanym pliku w lokalnym repozytorium. To otworzy TortoiseMerge, gdzie można łatwo poradzić sobie ze wszystkimi konfliktami, masz. Po zakończeniu wystarczy zamknąć TortoiseMerge (nie musisz nawet zapisywać zmian, prawdopodobnie zostanie to wykonane automatycznie) i po kilku sekundach SourceTree powinien sobie z tym poradzić z gracją.

Jedyny problem polega na tym, że automatycznie tworzy kopię zapasową, nawet jeśli właściwa opcja nie jest zaznaczona .

 9
Author: trejder,
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
2017-05-23 12:34:20

Gdy menu rozwiązuj konflikty->zawartość jest wyłączone, jeden z nich może znajdować się na liście oczekujących plików. Musimy wybrać opcję Conflicted files z listy rozwijanej (u góry)

Hope it helps

 4
Author: ozkary,
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
2015-03-31 16:41:28