根本原因是core.quotepath默认为true,Git将中文等非ASCII字符转义为八进制序列;解决只需执行git config --global core.quotepath false,并确保终端编码为UTF-8(如Windows需chcp 65001),git log乱码则需同步配置i18n.commitencoding、i18n.logoutputencoding及LESSCHARSET。
git
status 显示中文文件名为八进制转义(如 \344\270\255\346\226\207)
这是
默认为
导致的——Git 把所有非 ASCII 字符(包括中文)强制转成 C 风格的八进制序列,纯属显示层压制,不改存储。
解决只需一条命令:
(全局生效)
或仅当前仓库:
但注意:设完后仍乱码,大概率是终端没跟上。Windows CMD 必须先执行
切到 UTF-8;Git Bash / Windows Terminal 默认 OK;macOS/Linux 终端一般无需操作,但建议检查
确认输出含
。
git log 提交信息或作者名显示为 或方块
这和
无关,是 Git 读取/输出 commit message 时的编码链断了。关键在三处配置是否对齐:
(告诉 Git:你存的 commit 是 UTF-8)
(告诉 Git:你输出 log 时也按 UTF-8 解码)
(加到
或
,让分页器
正确渲染)
注意:
在 Git ≥ 2.31 已标记为弃用,但 Windows 上仍建议保留;macOS/Linux 用户若设
无效,可试
。
Git
程序猿必备版本控制工具
下载
Windows 下 git add 中文文件失败,报 “did not match any files”
这不是编码问题,而是 Git 实际没识别到文件路径——常见于旧版 Git(
必须检查并操作以下几点:
运行
,确认 ≥ 2.31;否则升级 Git
执行
(仅 Windows,关闭 NTFS 保留名检查)
避免混用 CMD 和 Git Bash 操作同一仓库:CMD 默认 GBK,Git Bash 默认 UTF-8,路径解析错位后 Git 根本找不到文件
极端情况可手动编辑
,追加两行:
远程仓库看到中文文件名变成 %E6%97%A5%E5%B8%B8 这类 URL 编码
说明 Git 已把文件名实际存成了 URL 编码格式,不是显示问题,是底层路径处理失败。典型诱因:
Git 版本太老(
Windows 上未关
,NTFS 拦截后 Git 回退到安全但错误的编码方式
用 VS Code 内置终端提交、却用 CMD 查看状态,环境不一致导致 Git 缓存错乱
修复后务必验证:删掉本地 .git/index,再执行
强制重载索引,否则旧编码残留会持续干扰。
最易被忽略的是终端本身——Git 配得再准,CMD 还卡在 GBK,
就永远是方块。别只调 Git,顺手敲
看当前代码页,再看终端字体是否支持 Unicode。
core.quotepathtruegit config --global core.quotepath falsegit config core.quotepath falsechcp 65001locale | grep UTF-8UTF-8core.quotepathgit config --global i18n.commitencoding utf-8git config --global i18n.logoutputencoding utf-8export LESSCHARSET=utf-8~/.bashrc~/.zshrclessi18n.logoutputencodingutf-8en_US.UTF-8git --versiongit config --global core.protectNTFS falseGit 安装目录/etc/gitconfig[core]outputEncoding = utf-8logOutputEncoding = utf-8core.protectNTFSgit read-tree --reset -u HEADgit statuschcp