Git在Windows上将中文路径误按Latin-1处理,导致git status显示\344\272\240等八进制转义;根源是Git内部以原始字节存储文件名,而Windows终端用GBK、Git Bash默认UTF-8解码不一致,仅显示层异常,实际提交正常。

Git 在 Windows 上默认会把中文路径当成 Latin-1 编码处理,所以 git status 里中文文件名变成一堆 \344\272\240 这样的八进制转义,不是真乱码,是编码解释错了。
为什么 git status 显示中文文件名是 \344\272\240 这种格式
Git 内部用原始字节存文件名,不绑定字符集。Windows 命令行(CMD/PowerShell)默认用 GBK,而 Git for Windows 的 Bash 环境默认按 UTF-8 解释这些字节 —— 但 Git 本身没被告知“当前工作区路径是 GBK 编码”,所以它把 GBK 字节流强行当 UTF-8 解码,结果就是乱码式转义。
- 这不是文件损坏,
git add和git commit实际能正常记录中文名 - 问题只出在显示层:Git 不知道该用什么编码去展示文件名
- Linux/macOS 一般无此问题,因为系统默认 UTF-8,Git 和终端编码一致
设置 core.quotePath=false 让中文名“看起来正常”
这个配置不会改变 Git 存储方式,只是让 Git 在输出时跳过转义,直接把原始字节扔给终端——只要终端编码和文件系统一致(比如 Windows 终端是 GBK),就能正确显示中文。
- 全局生效:
git config --global core.quotePath false - 仅当前仓库:
git config core.quotePath false - 注意:设完后
git status可能仍显示异常,需确保终端编码匹配(CMD 下可用chcp 65001切 UTF-8,或改用 Windows Terminal + UTF-8 配置)
终极方案:强制 Git 用 UTF-8 处理路径(推荐 Windows + Git 2.31+)
新版 Git 支持 core.precomposeUnicode 和 core.filemode 以外的更底层控制,但真正起作用的是:
- 启用 UTF-8 路径支持:
git config --global core.protectNTFS false(仅 Windows,防 NTFS 保留名拦截) - 告诉 Git 工作区路径用 UTF-8:
git config --global core.untrackedCache true(辅助,非必需) - 最关键一步:在 Git 安装目录下的
etc/gitconfig里手动加一行:logOutputEncoding = utf-8和core.outputEncoding = utf-8(部分版本需此) - 更稳妥的做法:用 Git Bash 而非 CMD 运行,Git Bash 默认 UTF-8,且
core.quotePath=false+ 终端 UTF-8 后基本无感
实际中最容易被忽略的是终端本身的编码设置 —— 即使 Git 配对了,CMD 还卡在 GBK,照样显示方块或问号。别只调 Git,顺手检查 chcp 输出和终端字体是否支持 Unicode。


















