问题描述
在使用 Git 时,如果文件名包含中文或其他非 ASCII 字符,执行 git status 等命令时会看到类似这样的输出:
$ git status
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)"\350\256\242\345\215\225\347\256\241\347\220\206.txt""\347\224\250\346\210\267\346\225\260\346\215\256/\344\270\252\344\272\272\344\277\241\346\201\257.json""\346\226\207\346\241\243/\351\241\271\347\233\256\350\257\264\346\230\216.md"
这些 \xxx 格式的内容并不是乱码,而是 Git 将非 ASCII 字符进行了八进制转义显示。
原因分析
Git 默认会对路径中的非 ASCII 字符进行转义,这是为了:
- 避免在某些终端上显示异常
- 保证在不同系统间的兼容性
- 防止特殊字符引起的问题
这个行为由 Git 的 core.quotepath 配置项控制,默认值为 true。
解决方案
设置不转义中文字符
执行以下命令,让 Git 正常显示中文文件名:
git config --global core.quotepath false
参数说明:
--global:全局设置,影响所有 Git 仓库core.quotepath false:禁用路径转义
如果只想对当前仓库生效,去掉 --global 参数:
git config core.quotepath false
验证设置
设置后再执行 git status,就能看到正常的中文显示:
$ git status
On branch main
Untracked files:(use "git add <file>..." to include in what will be committed)订单管理.txt用户数据/个人信息.json文档/项目说明.md
恢复默认设置
如果想恢复 Git 的默认行为,有两种方式:
方式1:删除配置项
git config --global --unset core.quotepath
方式2:设置为默认值
git config --global core.quotepath true
查看当前配置
查看 core.quotepath 的当前值:
git config --global core.quotepath
- 返回
false:已禁用转义 - 返回
true:启用转义(默认) - 返回空:未设置(使用默认值
true)
补充说明
-
配置项名称不区分大小写:
core.quotepath、core.quotePath、CORE.QUOTEPATH都有效,但推荐使用全小写的标准写法。 -
适用范围:此设置影响所有 Git 命令的输出,包括
git status、git diff、git log等。 -
终端支持:确保你的终端支持 UTF-8 编码,否则即使设置了
core.quotepath false,中文也可能无法正常显示。 -
跨平台协作:如果团队成员使用不同操作系统,建议每个人根据自己的终端情况独立配置,不要将此配置加入到项目的
.git/config中。
总结
遇到 Git 中文文件名显示为转义码的问题,只需一行命令即可解决:
git config --global core.quotepath false
这是一个纯显示层面的设置,不会影响 Git 的实际功能和文件存储,可以放心使用。