看来,当git difftool
执行外部命令时,它不会正确引用参数。`git difftool`和witespaces在名称文件中
如果.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
正如你所看到的,文件名不被引用(尽管ex在命令中使用plicit引号),因此参数解析失败。删除.gitconfig
(编辑:以及将它们转义为\"
)中的引号不会改变结果。
(用任何diff程序代替echo
,你会得到更有意义的用例)。
如何获得正确转义的文件名?
我认为你必须逃脱引号:'CMD =回声\ “$ LOCAL \” \ “$ REMOTE \”' – CharlesB
我也尝试过,仍然没有改变。 –
'cmd =“echo”$ LOCAL \“\”$ REMOTE \“”'',cmd =“echo'$ LOCAL''$ REMOTE'”''? – CharlesB