问题描述

当使用 git status 查看仓库状态时,中文字符被显示为转义的八进制序列,例如:

"\346\224\277\347\240\201\346\226\207\346\241\243.md"

而不是正常显示中文名:

"代码文档.md"

原因分析

这是由于 git 的 core.quotePath 配置项默认设置为 true,导致非 ASCII 字符被转义显示。

解决方案

方案一:配置 core.quotePath(推荐)

关闭路径转义功能,让 git 直接显示非 ASCII 字符:

git config --global core.quotePath false

说明:

  • --global 表示对所有仓库生效
  • 如果只对当前仓库生效,去掉 --global 参数

方案二:设置环境变量

设置 LESSCHARSET 环境变量为 UTF-8:

export LESSCHARSET=utf-8

持久化配置:
将上述命令添加到 ~/.bashrc 或 ~/.zshrc 文件中:

echo 'export LESSCHARSET=utf-8' >> ~/.bashrc
source ~/.bashrc

方案三:临时使用(不修改配置)

使用 -c 参数临时关闭路径转义:

git -c core.quotePath=false status

验证

执行以下命令验证配置是否生效:

git status

现在应该能正常显示中文文件名。

终端编码要求

确保终端支持 UTF-8 编码:

检查当前语言设置

echo $LANG

正常输出应该类似:

  • en_US.UTF-8
  • zh_CN.UTF-8

临时设置编码

如果编码不正确,可以临时设置:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

永久设置编码

编辑 ~/.bashrc 或 ~/.zshrc,添加:

export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8

然后执行:

source ~/.bashrc

相关 Git 配置

查看当前 git 配置:

git config --global --list | grep quotePath

查看当前仓库配置:

git config --local --list | grep quotePath

总结

推荐使用 方案一,配置简单且一劳永逸:

git config --global core.quotePath false

这样配置后,git 的所有输出(status、log、diff 等)都会正确显示中文文件名。

参考资料