从SourceTree启动后,FileMerge立即退出

Gre*_*pff 33 xcode filemerge atlassian-sourcetree

我经常使用Atlassian SourceTree(在Mac OS X上)启动FileMerge来解决git合并冲突.突然之间,它已停止工作:当我右键单击并选择时Resolve Conflicts > Launch External Merge Tool,FileMerge启动,创建其中间文件,然后立即退出.SourceTree解释为合并过程完成.

问题是什么?如何调试/修复它?

我注意到之前的问题' SourceTree filemerge立即退出并创建了4个文件.怎么解决?'没有解决这个特定情况(例如,它说FileMerge在标题中退出,但在正文中它表示FileMerge将/ dev/null显示为其中一个面板.此外,我的合并冲突不是由于删除了文件. )

Chr*_*sJF 101

为了诊断问题,我opendiff从终端跑了.我收到以下错误:

xcode-select:错误:工具'opendiff'需要Xcode,但是活动的开发人员目录'/ Library/Developer/CommandLineTools'是一个命令行工具实例

要解决:

  1. 打开Xcode>首选项>位置
  2. 单击" 命令行工具 "旁边的下拉框,然后选择当前的Xcode版本.(这对我来说是空的,因为我最近在新Mac上安装了Xcode.)

命令行工具

  1. opendiff再次在终端中运行,不再出现上述错误.

现在,当您单击" 启动外部合并工具"时,FileMerge将从SourceTree正确打开.


Tom*_*ina 11

对我来说,SourceTree甚至没有启动FileMerge.单击" 启动外部合并工具"时没有任何操作.

此外,opendiff在终端中运行按预期工作:

$ opendiff
opendiff[64176:5561154] too few arguments
opendiff[64176:5561154] usage: opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]
Run Code Online (Sandbox Code Playgroud)

帮助我的是通过以下参数手动配置SourceTree以使用FileMergeopendiff:$LOCAL $REMOTE -ancestor $BASE -merge $MERGED

SourceTree手动配置为使用opendiff

这样,SourceTree按预期打开FileMerge.

  • 同样在这里,但我不知道为什么仅设置为文件合并时它不起作用 (2认同)

Gre*_*pff 7

如果Xcode最近自行更新,您可能需要同意新的许可条款.如果您尚未同意许可条款,FileMerge(从SourceTree启动时)将立即退出.

要检查这一点,请打开一个shell并以普通用户身份运行:

$ opendiff
Run Code Online (Sandbox Code Playgroud)

如果许可证是问题,它会告诉你.要同意新的许可条款,您需要使用sudo以下命令运行open diff :

$ sudo opendiff
Run Code Online (Sandbox Code Playgroud)

在同意许可条款后,您现在可以尝试使用从SourceTree重新启动FileMerge Resolve Conflicts > Launch External Merge Tool.FileMerge应该启动并正常运行.

  • 它说`opendiff xcode-select:错误:工具'opendiff'需要Xcode,但是活动的开发人员目录'/ Library/Developer/CommandLineTools'是一个命令行工具实例 (3认同)

fab*_*abe 6

这也可以解决消息“xcode-select:错误:工具'opendiff'需要Xcode,但活动开发人员目录'/Library/Developer/CommandLineTools'是命令行工具实例”

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
Run Code Online (Sandbox Code Playgroud)


小智 6

这有所帮助:https : //gist.github.com/kylefox/4512777

告诉系统Xcode实用程序何时生效:

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer

全局设置“ opendiff”作为默认的合并工具:

git config --global merge.tool opendiff