Git中p4merge合并工具出现错误

11
我已经为p4merge设置了classpath并设置了.gitconfig文件,但当p4merge工具应该打开冲突的两个文件时,我遇到了这个错误。 有人知道解决方法吗?
[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
10个回答

6

这在我这里可行:

[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

keepTemporaries默认为false。无论何种情况,它都应该设置为mergetool.keepTemporaries,而不是mergetool.<Tool>.keepTemporariesKeepBackup也是在没有指定<Tool>的情况下设置的。 - Alex78191
trustExitCode 不应该被设置为 false (默认应该是 true)。 - Alex78191

4

为什么一切都那么难,我讨厌写命令,那我该怎么办呢?

  1. 这里下载并安装P4Merge工具

enter image description here

  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 mergetool

工具将会打开。

enter image description here

在底部是你的最终版本,你可以在那里编辑然后保存并提交,冲突将被解决。


选项“path”不是必需的。 - Alex78191

3
如果你刚安装了p4merge,并且更新了环境变量,那么你可能还需要重新启动git控制台才能让更新生效。

2

2
很遗憾,这是针对OSX的,而且原帖明显是在Windows上。 - nathanchere

1
如果您不想将p4merge添加到环境变量Path中(正如Dan Lister所提到的),您可以在git配置中添加参数路径:
[mergetool "p4merge"]
    path = C:/Program Files/Perforce/p4merge.exe

它在 git v1.7.11 (WinXP) 上对我有效。


我不喜欢选项卡的顺序 REMOTE、BASE、LOCAL。最好使用 cmd = 'C:/Program Files/Perforce/p4merge.exe' $BASE $LOCAL $REMOTE $MERGED - Alex78191

1

看起来它找不到p4merge,所以尝试通过系统属性将“C:\Program Files\Perforce\”添加到您的PATH环境变量中。


0

使用此设置作为合并工具。

  • $ 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/\$MERGED"

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

  • $ git config --global mergetool.keepBackup false

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


0

将完整的P4merge路径添加到您的.gitconfig文件中。这是我的(请注意,路径分隔符已经翻转了,即c:/而不是c:\):

[merge]
    tool = p4
[mergetool "p4"]
    cmd = c:/winprogs/p4merge/p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"

1
如果exe文件的路径包含空格,则应该用引号括起来。 cmd = 'C:/Program Files/Perforce/p4merge.exe' $BASE $LOCAL $REMOTE $MERGED - Alex78191

0
These steps worked for me.

从perforce.com下载并安装P4Merge工具

在您的个人资料名称/电子邮件ID之后。

将此内容替换为您的~/.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\""

0

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

一切准备就绪,你可以开始了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接