【问题标题】:error with p4merge merging tool in gitgit中的p4merge合并工具出错
【发布时间】:2012-05-24 17:05:02
【问题描述】:

我已经为 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

【问题讨论】:

    标签: git p4merge


    【解决方案1】:

    它对我有用:

    [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 默认为假。在任何情况下,它都应该设置为mergetool.keepTemporaries,而不是mergetool.<Tool>.keepTemporariesKeepBackup 也被设置,但未指定 <Tool>
    • trustExitCode 不应设置为 false(应为默认值 - true)。
    【解决方案2】:

    为什么一切都那么难,我讨厌写命令,所以我做了什么?

    1. 安装 p4Merge 工具表单here 搜索 P4Merge 并安装 exe,然后您只需要

    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 合并工具

    工具将打开。

    底部是您可以编辑的最终版本,然后保存并提交,冲突将得到解决。

    【讨论】:

    • 选项path 不是必需的。
    【解决方案3】:

    如果您刚刚安装了 p4merge,您可能还需要重新启动 git 控制台,以便注册更新的环境变量。

    【讨论】:

      【解决方案4】:

      安装 P4Merge 后,我按照此页面上的说明进行操作,它非常适合我。

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

      【讨论】:

      • 对于 OSX 来说太糟糕了,而且 OP 显然在 Windows 上。
      【解决方案5】:

      它似乎找不到 p4merge,因此请尝试通过系统属性将“C:\Program Files\Perforce\”添加到您的 PATH 环境变量中。

      【讨论】:

        【解决方案6】:

        如果您不想在环境变量 Path 中添加 p4merge(如 Dan Lister 所述),您可以在 git config 中添加参数路径:

        [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
        【解决方案7】:

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

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

        【讨论】:

        • 如果 exe 的路径包含空格,那么它应该用引号引起来。 cmd = 'C:/Program Files/Perforce/p4merge.exe' $BASE $LOCAL $REMOTE $MERGED
        【解决方案8】:
        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\""
        

        【讨论】:

          【解决方案9】:

          将此用于正确设置为合并工具。

          • $ 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

          【讨论】:

            【解决方案10】:

            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
            

            一切就绪,准备出发。

            【讨论】:

              猜你喜欢
              • 2015-11-16
              • 2010-10-26
              • 2010-09-07
              • 2012-10-07
              • 2013-10-29
              • 2018-10-06
              • 2015-10-22
              • 1970-01-01
              • 2018-05-05
              相关资源
              最近更新 更多