it-roy-ru.com

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

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

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

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

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

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

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

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

125
gtrig

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

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

  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 должен обработать это изящно.

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

10
trejder

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

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

4
ozkary