Macos 使用IntelliJ作为git合并工具总是在启动时立即退出

Macos 使用IntelliJ作为git合并工具总是在启动时立即退出,macos,git,intellij-idea,mergetool,Macos,Git,Intellij Idea,Mergetool,我已经将IntelliJ配置为mac上的diff和mergetool,但git启动它时,命令行总是立即返回,而不是等待diff完成,这意味着所做的更改不会反映在磁盘上 我的配置是: [mergetool "intellij"] cmd = /Applications/IntelliJ\\ IDEA\\ 13\\ CE.app/Contents/MacOS/idea merge \ $(cd $(dirname \"$LOCAL\") && pwd)/$

我已经将IntelliJ配置为mac上的diff和mergetool,但git启动它时,命令行总是立即返回,而不是等待diff完成,这意味着所做的更改不会反映在磁盘上

我的配置是:

[mergetool "intellij"]
    cmd = /Applications/IntelliJ\\ IDEA\\ 13\\ CE.app/Contents/MacOS/idea merge \
          $(cd $(dirname \"$LOCAL\") && pwd)/$(basename \"$LOCAL\") \
          $(cd $(dirname \"$REMOTE\") && pwd)/$(basename \"$REMOTE\") \
          $(cd $(dirname \"$BASE\") && pwd)/$(basename \"$BASE\") 
          $(cd $(dirname \"$MERGED\") && pwd)/$(basename \"$MERGED\")
    trustExitCode = true

我已经测试过在没有git的情况下手动调用IntelliJ,它也会立即返回,所以我认为这不是git调用造成的,而是IntelliJ命令行调用只是发送一条消息,将窗口打开到IntelliJ的现有运行实例。。有没有一个选项可以强制IntelliJ不返回或生成新实例来执行此操作?

没有办法。有三种变通方法:

  • 在使用difftool之前关闭现有应用程序。如果没有其他窗口打开,mergetool将正常工作

  • 使用IntelliJ的第二个实例时,请注意第二个实例的许可。例如,如果您使用license server,则两个实例都将从服务器获取许可证

  • 在启动脚本中添加类似暂停(在Windows上)的内容。所以git将调用BAT文件(在Windows上),这个BAT文件将调用IntelliJ,然后等待输入。完成所有需要的操作后,应返回控制台并手动按任意键

  • 现在可以了

    运行操作“创建命令行启动器…”来创建启动脚本(对于me/usr/local/bin/idea)

    在.gitconfig中:

    [mergetool "idea"]
      cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
      trustExitCode = true
    
    difftool也是如此

    [difftool "idea"]
      cmd = idea diff \"$LOCAL\" \"$REMOTE\"
    

    (由于一个bug,如果您刚才创建了它并同时更新了Intellij,则可能必须执行此操作。)

    您确定
    .gitconfig
    文件中允许使用这些反斜杠终止符吗?