Чтобы проконтролировать ответ Чарльза Бэйли, вот моя настройка git, использующая p4merge (бесплатный кроссплатформенный инструмент 3way merge); проверено на msys Git (Windows) установить:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
или, из оболочки Windows cmd.exe, вторая строка становится:
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
Изменения (по отношению к Чарльзу Бейли):
- добавлен в глобальный git config, т.е. действителен для всех проектов git, а не только для текущего
- значение конфигурации пользовательского инструмента находится в "mergetool. [tool] .cmd", а не в "merge. [tool] .cmd" (глупый я, потратил час на устранение неполадок, почему git продолжал жаловаться на несуществующий инструмент)
- добавлены двойные кавычки для всех имен файлов, чтобы с помощью инструмента слияния все еще можно было находить файлы с пробелами (я проверял это в msys Git из Powershell)
- обратите внимание, что по умолчанию Perforce добавит каталог установки в PATH, поэтому нет необходимости указывать полный путь к p4merge в команде
Загрузить: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
РЕДАКТИРОВАТЬ (февраль 2014 г.)
Как отметил @Gregory Pakosz , последняя версия msys git теперь «изначально» поддерживает p4merge (протестировано на 1.8.5.2.msysgit.0 ).
Вы можете отобразить список поддерживаемых инструментов, выполнив:
git mergetool --tool-help
Вы должны увидеть p4merge в доступном или действительном списке. Если нет, пожалуйста, обновите ваш мерзавец.
Если p4merge был указан как доступный , он находится в вашем PATH, и вам нужно только установить merge.tool :
git config --global merge.tool p4merge
Если он был указан как действительный , вы должны определить mergetool.p4merge.path в дополнение к merge.tool :
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
- Выше приведен пример пути, когда p4merge был установлен для текущего пользователя, а не для всей системы (не требует прав администратора или повышения уровня контроля учетных записей)
- Хотя
~
следует расширить до домашнего каталога текущего пользователя (так что теоретически путь должен быть ~/AppData/Local/Perforce/p4merge.exe
), это не сработало для меня
- Еще лучше было бы воспользоваться преимуществами переменной среды (например
$LOCALAPPDATA/Perforce/p4merge.exe
), git, похоже, не расширяет переменные среды для путей (если вы знаете, как это работает, пожалуйста, дайте мне знать или обновите этот ответ)