Как интерактивно (визуально) разрешать конфликты в SourceTree / git


119

Я использую (Windows) SourceTree для своего проекта git. Я могу сделать это либо в командной строке, либо в терминале Linux.

Но мне интересно, есть ли хороший способ интерактивного и визуального разрешения конфликтов. Например, если вытягивание обнаруживает конфликты, появляется средство управления конфликтами на основе графического интерфейса пользователя (например, P4Merge). Является ли это возможным?

Я всегда занимаюсь разрешением конфликтов вручную, что очень болезненно.

Это, например, pullсообщение git от 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.

Ответы:


135

В SourceTree нажмите Инструменты-> Параметры. Затем на вкладке «Общие» обязательно установите флажок, чтобы разрешить SourceTree изменять ваши файлы конфигурации Git.

Затем перейдите на вкладку «Различия». В нижней половине используйте раскрывающийся список, чтобы выбрать внешнюю программу, которую вы хотите использовать для выполнения различий и слияния. Я установил KDiff3, и он мне нравится. Когда вы закончите, нажмите ОК.

Теперь, когда есть слияние, вы можете перейти в Действия-> Разрешить конфликты-> Запуск внешнего инструмента слияния.


4
Я пробовал это, но в конце концов, я не вижу, чтобы запускалось вне сравнения. Я вижу, как создаются файлы сравнения, но это все. Я не могу разрешить конфликт. Изменение этого значения на стандартное / стандартное сравнение тоже не помогает.
Echiban

1
@echiban У вас, вероятно, есть стандартная лицензия для Beyond Compare, которая не допускает трехстороннее слияние. Вам нужно стать профессионалом, чтобы использовать его как git mergetool
Pierdevara

6
После выполнения всех шагов по настройке «Launch External Merge Tool» по-прежнему неактивен для меня, нет возможности его активировать
pal4life

2
Также я не выбирал файл конфликта слияния, как только я это сделал, все прошло нормально
pal4life 01

2
Мне пришлось щелкнуть элемент «Незавершенные изменения» в списке фиксаций, прежде чем он станет серым.
Мика Золту

11

Я использую SourceTree вместе с TortoiseMerge / Diff, который является очень простым и удобным инструментом сравнения / слияния.

Если вы тоже хотите его использовать, то:

  1. Получите автономную версию TortoiseMerge / Diff (довольно старую, поскольку она не поставляется отдельно, начиная с версии 1.6.7 TortosieSVN, то есть с июля 2011 года). Ссылки и подробности в этом ответе .

  2. Разархивируйте TortoiseIDiff.exeи TortoiseMerge.exeв любую папку (c:\Program Files (x86)\Atlassian\SourceTree\extras\ в моем случае).

  3. В SourceTree откройте Tools > Options > Diff > External Diff / Merge. ВыбратьTortoiseMerge в обоих раскрывающихся списках.

  4. Нажмите OKи укажите SourceTree на ваше местоположение TortoiseIDiff.exeиTortoiseMerge.exe .

После этого вы можете выбрать Resolve Conflicts > Launch External Merge Tool из контекстного меню каждый конфликтующий файл в вашем локальном репозитории. Это откроет TortoiseMerge, где вы сможете легко справиться со всеми имеющимися у вас конфликтами. После завершения просто закройте TortoiseMerge (вам даже не нужно сохранять изменения, это, вероятно, будет сделано автоматически), и через несколько секунд SourceTree должен обработать это изящно.

Единственная проблема в том, что он автоматически создает резервную копию, даже если соответствующий параметр не отмечен .


4

Когда Resolve Conflicts-> Content Menu отключены, один из них может быть в списке ожидающих файлов. Нам нужно выбрать опцию Конфликтующие файлы из выпадающего (вверху)

Надеюсь, поможет

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.