git - `git difftool` 和名称文件中的空格

标签 git path whitespace

看来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/

相关文章:

java - 获取Java类中文件的真实路径

java - 如何在Java中设置文件的下一个编码

java - 如何使用java知道web容器的路径?

javascript - 为什么 javascript 只换行一次(第一次)?

ruby - 使用空格拆分字符串,同时将\n 保留为单独的元素

asp.net-mvc - git 和 ASP MVC

windows - 在 Windows 上安全地使用 junction 或 mklink/j 与 git 存储库

svn - 我可以将 GIT 存储库与 SVN 客户端一起使用吗?

git - 克隆样板后我应该如何继续构建应用程序?

jQuery:在 html 字符串的末尾插入空格