看来git difftool
执行外部命令时,没有正确引用参数。
如果 .gitconfig
包含以下几行:
[difftool.echo]
cmd = echo "$LOCAL" "$REMOTE"
当我尝试使用包含空格的路径运行 difftool
时,例如
> git difftool -t echo HEAD^ HEAD spaces\ here/test.txt
我得到以下结果:
/tmp/RL2Nyi_test.txt spaces here/test.txt
如您所见,文件名未被引号括起来(尽管命令中有显式引号),因此参数解析失败。删除 .gitconfig
中的引号(编辑:以及将它们转义为 \"
)不会改变结果。
(通过用任何 diff 程序替换 echo
,您将获得更有意义的用例)。
如何正确转义文件名?
最佳答案
您需要在 .gitconfig
中对命令周围的引号进行转义:
cmd = difftoolname \"$LOCAL\" \"$REMOTE\"
关于git - `git difftool` 和名称文件中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21087026/