我们使用git对项目进行版本控制。在OS X下开发,我们希望使用与开发工具一起分发的FileMerge应用程序来显示git生成的差异:
如果我们理解正确,就可以通过git difftool
配置其调用。
根据来自不同来源的建议,我们将其添加到我们的全局git配置文件中:
[diff]
tool = opendiff
它适用于"逐文件"的diffs。但我们更喜欢在工具中立即加载目录差异,其命令为git difftool --dir-diff
。
当调用directory diff命令时,会正确生成不同文件的列表,但如果我们实际尝试打开一个文件,双方都会显示错误文件不存在。显然,这是因为opendiff几乎立即终止,因此git删除了进行比较的临时文件夹。
根据这个答案,我们将这些行添加到我们的全局git配置文件中:
[difftool "opendiff"]
cmd = /usr/bin/opendiff "$LOCAL" "$REMOTE" -merge "$MERGED" | cat
但它并不能解决文件不存在的问题(opendiff仍然几乎立即返回)。
这个用例的正确配置是什么?
问题是Filemerge过滤掉了.git
目录,git存储--dir-diff
输出中使用的目录。
在Filemerge中,转到"首选项">"过滤器"并从Files to ignore
中删除.git
,它应该可以工作。