p4merge 错误 [GIT]
Posted
技术标签:
【中文标题】p4merge 错误 [GIT]【英文标题】:p4merge error [GIT] 【发布时间】:2010-10-26 08:39:04 【问题描述】:我正在尝试将 p4merge 与 git 一起使用,但我得到了:
启动 p4merge 时出错:“path/myFile”是(或指向)无效文件(这列出了文件的 BASE、LOCAL、REMOTE 和标准版本)。
Git 告诉我冲突,然后它询问我是否要启动配置的合并工具 (p4merge),然后我得到上面的错误。
附加说明:任何文件都会发生这种情况!
关于这是什么以及如何解决它的任何线索?
【问题讨论】:
也许在 .gitconfig 中包含您配置合并工具和完整错误消息的部分?文件名中有空格吗? nope 文件名中没有空格 - 我使用这个问题配置了 git:***.com/questions/426026/… git diff tmp file invalid on windows when using external program on Windows 7的可能重复 【参考方案1】:这对我在 Windows 7 上使用 msysGit 有用:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
不知道为什么,但引用让我搞砸了。
【讨论】:
从一台 Win 8 机器切换到另一台,都使用 git bash 并且也必须这样做,谢谢! 我应该提到我使用 Powershell,所以我不确定 cmd.exe。 我用过git config --global mergetool.p4merge.cmd '"C:\Install Dir Has Spaces\p4merge.exe" $BASE $LOCAL $REMOTE $MERGED'
在 windows 命令提示符下,第二个命令失败,说明使用错误。所以我在 git bash 上执行了它并且它起作用了。
我在 Mac 终端中执行此操作,现在我收到此错误:'p4merge: command not found'。有什么建议吗?【参考方案2】:
您将 see here 我的 DiffMerge 或 KDiff3 配置。
基于此,我会推荐 p4merge:
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
并且merge.sh
是一个包装器(复制到您的PATH
环境变量引用的目录中),能够考虑不存在BASE
的情况。
(当一个文件在两个不同的分支中创建然后合并时,该文件将没有共同的祖先)
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
if [ -f $base ]
then
p4merge.exe -dl "$base" "$alocal" "$remote" "$result"
else
p4merge.exe -dl "$result" "$alocal" "$remote" "$result"
fi
你可能会注意到:
在合并的配置中使用PWD
使用“merge
”作为 merge.tool 名称的名称(因为实际工具是在 merge.sh
脚本中调用的,您可以在其中切换任意数量的合并工具)
在脚本中在$base
、$alocal
、$remote
、$result
周围使用双引号
调用工具的条件路径,基于“基础”文件的存在。
需要始终将 3 个文件合并为参数(即使 'base' 不存在...)
刚刚测试过(事实证明,您可以download and install only p4merge -- 部分客户端/可视合并工具 --,即使您没有安装任何其他 P4 产品)。
使用上述设置,MSysGit1.6.3,DOS 会话或 Git bash 会话: 它只是工作TM。
更新 msysgit 1.7.x
Benjol 在 cmets 中提及:
msysgit 现在原生支持 p4merge。
这意味着你可以这样做:
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false
【讨论】:
您在第一个代码块的第二行中有两次“merge.sh”,但纠正后,一切正常。谢谢! 我刚刚在新机器上又试了一次。在我看来,如果您从 bash 设置配置,$PWD
和 $LOCAL
变量会在配置文件中展开。我不得不手动编辑%USERPROFILE$\.gitconfig
文件。也许是我的错误,但以防其他人有同样的问题。
@Benjol:很有趣,我也会再次测试它。您的新机器与您的第一次尝试不同吗? (较新的操作系统?)
@VonC,Vista,是的。另一个值得一提的调整是keepBackup = false
(.orig 文件让我发疯)
注意:根据第三条评论here,msysgit 现在原生支持 p4merge。我不确定从哪个版本开始。这意味着你可以只做git config --global merge.tool p4merge
(我推荐git config --global mergetool.keepBackup false
)以上是关于p4merge 错误 [GIT]的主要内容,如果未能解决你的问题,请参考以下文章
text 在Mac OS X上使用p4merge作为Git mergetool。
ini Git for Windows:将Helix Visual Merge Tool(P4Merge)设置为默认的mergetool