git ls-files真的与字符无关吗?如果不是,那是什么?

Dav*_*son 4 git utf-8

我正在使用git版本1.7.0在Mac OS 10.6中工作.

如果我执行

echo "" > frëd   # that's f r \xEB d
git ls-files --other 'f*'
Run Code Online (Sandbox Code Playgroud)

我回来了

"fre\314\210d"                     # that's 14 characters including two \'s
Run Code Online (Sandbox Code Playgroud)

ls f*报告

fre?d                               # 4 characters, 5 bytes
Run Code Online (Sandbox Code Playgroud)

这会导致Emacs中magit-status模式的不良行为.

我如何解决这个问题并让git ls-files以与ls相同的方式报告,而不解释文件名的字节?

- 大卫

Tob*_*obu 5

Git转义文件名,以便它不包含任何难以解释的字符,如终端序列,常见的分隔符,如换行符等.ls顺便说一下(gnu),但这里ls更宽容.您可以使用该-z标志以零终止,机器可解析的格式获取原始名称.Magit应该使用它(解析转义更脆弱),如果可以,修补它.