ошибка с инструментом слияния p4merge в git

Я настроил свой путь к классам для p4merge и установил файл .gitconfig, но там я получаю эту ошибку, когда инструмент p4merge предполагает, что эти два файла конфликтуют. кто-нибудь знает решение?

добавлено в путь к классам: «C:\Program Files\Perforce\p4merge.exe» добавлено в файл .gitconfig:

[merge]
    tool = p4merge
[mergetool "p4merge"]
    cmd = p4merge.exe \\\"$BASE\\\" \\\"$LOCAL\\\" \\\"$REMOTE\\\" \\\"$MERGED\\\"

СООБЩЕНИЕ ОБ ОШИБКЕ:

Normal merge conflict for 'protected/views/layouts/main.php':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (p4merge):
C:\Program Files (x86)\Git/libexec/git-core/mergetools/p4merge: line 8: p4merge:
 command not found
protected/views/layouts/main.php seems unchanged.
Was the merge successful? [y/n] n
merge of protected/views/layouts/main.php failed

person user1415621    schedule 24.05.2012    source источник


Ответы (10)


Меня устраивает:

[merge]
    keepBackup = false;
    tool = p4merge
[mergetool "p4merge"]
    path = C:/Program Files/Perforce/p4merge.exe
    cmd = \"C:/Program Files/Perforce/p4merge.exe\" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[difftool]
    prompt = false
[mergetool]
    prompt = false
person Tuan    schedule 09.09.2013
comment
keepTemporaries по умолчанию ложно. В любом случае он должен быть установлен как mergetool.keepTemporaries, а не mergetool.<Tool>.keepTemporaries. KeepBackup также устанавливается без указания <Tool>. - person Alex78191; 06.05.2017
comment
trustExitCode не должно быть установлено в false (должно быть по умолчанию - true). - person Alex78191; 06.05.2017

Почему все так сложно, я ненавижу писать команды, так что я сделал?

  1. Установите форму инструмента p4Merge здесь, найдите P4Merge и установите исполняемый файл, тогда вам нужно только

введите здесь описание изображения

  1. Установите его как пользователь Windows

  2. Зайдите в каталог пользователя и найдите .gitconfig, отредактируйте его и добавьте

[mergetool "p4merge"]
  path = C:\\Program Files\\Perforce\\p4merge.exe
  cmd = \"C:/Program Files/Perforce/p4merge.exe\" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
[merge]
  tool = p4merge

Как это использовать? Когда вы что-то тянете и у вас возникают конфликты, вы можете просто написать

git слияние

И инструмент будет открыт.

введите здесь описание изображения

Внизу находится ваша окончательная версия, которую вы можете отредактировать, затем просто сохраните и зафиксируйте, и конфликт будет разрешен.

person Xelian    schedule 08.11.2016
comment
Опция path не нужна. - person Alex78191; 06.05.2017

Вам также может потребоваться перезапустить консоль git, если вы только что установили p4merge, чтобы обновленные переменные среды зарегистрировались.

person michael_hook    schedule 12.06.2012

После того, как я установил P4Merge, я следовал инструкциям на этой странице, и у меня он отлично работает.

https://gist.github.com/tony4d/3454372

person Matthew Harrison    schedule 31.01.2014
comment
Жаль, что это для OSX, а OP явно для Windows. - person nathanchere; 14.10.2015

Похоже, что он не может найти p4merge, поэтому попробуйте добавить «C:\Program Files\Perforce\» в переменную среды PATH через свойства системы.

person Dan Lister    schedule 24.05.2012

Добавьте полный путь P4merge в свой .gitconfig. Вот мой (обратите внимание, что разделители путей перевернуты, то есть c:/ вместо c:\):

[merge]
    tool = p4
[mergetool "p4"]
    cmd = c:/winprogs/p4merge/p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
person ellotheth    schedule 24.05.2012
comment
Если путь к exe содержит пробелы, то он должен быть в кавычках. cmd = 'C:/Program Files/Perforce/p4merge.exe' $BASE $LOCAL $REMOTE $MERGED - person Alex78191; 06.05.2017

Если вы не хотите добавлять p4merge в переменную среды Path (как упомянул Дэн Листер), вы можете добавить путь параметра в свою конфигурацию git:

[mergetool "p4merge"]
    path = C:/Program Files/Perforce/p4merge.exe

У меня работает на git v1.7.11 (WinXP).

person patlach    schedule 05.02.2013
comment
Мне не нравится порядок вкладок REMOTE, BASE, LOCAL. Лучше использовать cmd = 'C:/Program Files/Perforce/p4merge.exe' $BASE $LOCAL $REMOTE $MERGED - person Alex78191; 06.05.2017

These steps worked for me.

После загрузки и установки инструмента P4Merge с сайта perforce.com

После имени вашего профиля/идентификатора электронной почты.

Замените это содержимое в вашем файле ~/.gitconfig

 enter code here

[merge]
  keepBackup = false
    tool = p4merge
[mergetool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$PWD/$BASE\"" "\"$PWD/$LOCAL\""  "\"$PWD/$REMOTE\"" "\"$PWD/$MERGED\""   
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    tool = p4merge
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge "\"$REMOTE\"" "\"$LOCAL\""
person Akhilesh    schedule 12.10.2017

Используйте это для правильной настройки в качестве инструмента слияния.

  • $ git config --global merge.tool p4mergetool

  • $ git config --global mergetool.p4mergetool.cmd \ "/Applications/p4merge.app/Contents/Resources/launchp4merge \$PWD/\$BASE \$PWD/\$REMOTE \$PWD/\$LOCAL \$PWD/ \$ОБЪЕДИНЕНО"

  • $ git config --global mergetool.p4mergetool.trustExitCode false

  • $ git config --global mergetool.keepBackup false

Ссылка: https://gist.github.com/tony4d/3454372

person Ankit Mahajan    schedule 22.07.2019

1) отредактируйте файл конфигурации git

git config --edit --global

2) добавить следующее (изменить соответственно)

[merge]
    keepBackup = false;
    tool = p4merge
[mergetool "p4merge"]
    path = C:/Program Files/Perforce/p4merge.exe
    cmd = \"C:/Program Files/Perforce/p4merge.exe\" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false
[diff]
    tool = p4mergetool
[difftool "p4merge"]
    cmd = /Applications/p4merge.app/Contents/Resources/launchp4merge $LOCAL $REMOTEhere

3) инициализировать файл конфигурации

git init

Все готово, вы готовы к работе.

person sachyy    schedule 28.05.2020