Чтобы проконтролировать ответ Чарльза Бэйли, вот моя настройка 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 в списке доступный или действительный . Если нет, пожалуйста, обновите ваш git.
Если 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 был установлен для текущего пользователя, а не для всей системы (не требует прав администратора или повышения UAC)
- Хотя
~
должен расширяться до домашнего каталога текущего пользователя (поэтому теоретически путь должен быть ~/AppData/Local/Perforce/p4merge.exe
), это не сработало для меня
- Еще лучше было бы воспользоваться преимуществами переменной окружения (например,
$LOCALAPPDATA/Perforce/p4merge.exe
), git, похоже, не расширяет переменные окружения для путей (если вы знаете, как это работает, пожалуйста, дайте мне знать или обновите это ответить)