Arn*_*sen 10 git macos intellij-idea mergetool
我在我的mac上配置了IntelliJ作为我的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
Run Code Online (Sandbox Code Playgroud)
我在没有git的情况下手动调用IntelliJ,它也会立即返回,所以我不认为这是由git的调用引起的,而是IntelliJ命令行调用只是发送一条消息来打开窗口到现有的运行实例IntelliJ ..是否有一个选项可以强制IntelliJ不返回或生成一个新实例来使其工作?
现在这有效了。
运行“创建命令行启动器...”操作来创建启动脚本(对我来说是 /usr/local/bin/idea。)
在 .gitconfig 中:
[mergetool "idea"]
cmd = idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
trustExitCode = true
Run Code Online (Sandbox Code Playgroud)
同样对于 difftool
[difftool "idea"]
cmd = idea diff \"$LOCAL\" \"$REMOTE\"
Run Code Online (Sandbox Code Playgroud)
(由于存在错误,如果您不久前创建了命令行启动器并同时更新了 Intellij,则可能需要更新它。)
没有办法做到。有以下三种解决方法:
使用 difftool 之前关闭现有应用程序。如果没有打开其他窗口,mergetool 将正常工作。
使用具有不同缓存和配置主目录的 IntelliJ 的第二个实例,但要小心第二个实例的许可。例如,如果您使用许可证服务器,两个实例都将从服务器获取许可证。
将诸如暂停(在 Windows 上)之类的内容添加到启动脚本中。因此 git 将调用 BAT 文件(在 Windows 上),该 BAT 文件将调用 IntelliJ,然后等待输入。完成所有需要的操作后,您应该返回控制台并手动按任意键。