使用gitstatus查看本地有改动但未提交的中文文件名时,发现会显示为一串数字,没有显示中文的文件名。具体如下所示:
$gitstatus#位于分支master#尚未暂存以备提交的变更:#(使用"gitadd<file>..."更新要提交的内容)#(使用"gitcheckout--<file>..."丢弃工作区的改动)##修改:"\224\257\346\216\247\345\210\266\346\265\201.txt"
解决方案是设置git的core.quotepath选项为false:
gitconfig--globalcore.quotepathfalse
查看git在线帮助手册(https://git-scm.com/docs/git-config),里面对core.quotepath选项说明如下:
core.quotePath
Commandsthatoutputpaths(e.g.ls-files,diff),willquote"unusual"charactersinthepathnamebyenclosingthepathnameindouble-quotesandescapingthosecharacterswithbackslashesinthesamewayCescapescontrolcharacters(e.g.tforTAB,nforLF,\forbackslash)orbyteswithvalueslargerthan0x80(e.g.octal302265for"micro"inUTF-8).Ifthisvariableissettofalse,byteshigherthan0x80arenotconsidered"unusual"anymore.Double-quotes,backslashandcontrolcharactersarealwaysescapedregardlessofthesettingofthisvariable.Asimplespacecharacterisnotconsidered"unusual".Manycommandscanoutputpathnamescompletelyverbatimusingthe-zoption.Thedefaultvalueistrue.
即,core.quotepath选项为true时,会对中文字符进行转义再显示,看起来就像是乱码。设置该选项为false,就会正常显示中文。
在一些终端上还要检查它自身的语言设置,看终端是否可以正常显示中文。