Щоб продовжити відповідь на відповідь Чарльза Бейлі, ось моя настройка 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, тобто діє для всіх git-проектів, а не лише для поточного
- значення конфігураційного інструменту знаходиться в "mergetool. [tool] .cmd", а не "merge. [tool] .cmd" (нерозумно, я витратив годину на усунення несправностей, чому git продовжує скаржитися на неіснуючий інструмент)
- додано подвійні лапки для всіх імен файлів, щоб файли з пробілами все ще можна було знайти інструментом злиття (я тестував це в msys Git від Powershell)
- зауважте, що за замовчуванням Perforce додасть свій dir установки до PATH, таким чином, не потрібно вказувати повний шлях до p4merge в команді
Завантажте: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
EDIT (лютий 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, здається, не розширює змінні середовища для шляхів (якщо ви знаєте, як це зробити, будь ласка, дайте мені знати або оновіть цю відповідь)