一直以来都使用 Git 来管理代码,而代码的文件名都是英文,因此从来没有试过用 Git 来管理中文文件。今天偶然想使用 Git 来管理一些
中文文件,发现原来在 Git 下,运行
1 | git status |
时中文文件名显示的转义名,就是以 ‘\’ 开头的字符。
于是就查了 Git 的 man 手册。原来 git config 中一项,core.quotePath 造成这样的问题。
大概意思就是 command 中输出的文件路径中,如果有“非正常”字符,将会把这些字符以 C 语言转义控制字符那样转义,并把它们放到双引号民中。
如果 core.quotepath 这个选项的值是 ture, 那么 git 会把字节值大于 0x80 的字符(其实就是非 ASCII 字符)认为是非法字符。
这个选项的默认值是 ture.
所以这个问题的正确解法是,把这个选项设置成 false.
1 | git config --global core.quotepath false |
再运行一次 git status, 将会看到,中文文件名可以正常显示了。