似乎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\"