根本原因是git编码配置、windows终端代码页与vscode环境变量三者未对齐;需执行git config --global core.quotepath false、i18n.commitencoding utf-8、i18n.logoutputencoding utf-8,并在settings.json中配置terminal.integrated.env.windows为utf-8环境。

VSCode版本控制提交信息显示中文乱码,根本原因不是Git本身不支持中文,而是终端或Git配置的字符编码与当前系统/文件编码不一致,导致git commit命令执行时读取或显示中文提交信息出错。这种情况在Windows上尤其常见,因为Git for Windows默认使用cp437或gbk编码,而VSCode集成终端(尤其是未配置时)可能按UTF-8解释字节流,结果就是“文件”这类典型乱码。
检查并统一 Git 终端编码(Windows 最关键一步)
VSCode 集成终端运行 git commit 时,实际调用的是 Git 自带的 Bash 或 PowerShell,其编码行为由 Git 配置和系统环境变量共同决定。不改 Git 层,只调 VSCode 设置是治标不治本。
- 在 VSCode 终端中运行:
git config --global core.quotepath false—— 关闭路径名转义,避免中文路径被编码为"\346\226\207\344\273\266"格式 - 强制 Git 使用 UTF-8 提交消息:运行
git config --global i18n.commitencoding utf-8 - 确保 Git 读取日志时也用 UTF-8:运行
git config --global i18n.logoutputencoding utf-8 - 如果仍乱码,检查 Windows 系统区域设置是否为“Beta: Use Unicode UTF-8 for worldwide language support”(控制面板 → 区域 → 管理 → 更改系统区域设置)。启用它可让 cmd/PowerShell/Git Bash 全局倾向 UTF-8
VSCode 集成终端的编码必须匹配 Git 配置
即使 Git 配置了 UTF-8,若 VSCode 终端本身没正确声明编码,照样会把 UTF-8 字节当 GBK 解——这是最常被忽略的断点。
- 打开 VSCode 设置(
Ctrl + ,),搜索terminal.integrated.env.windows - 点击“在 settings.json 中编辑”,添加如下环境变量:
"terminal.integrated.env.windows": {
"CHCP": "65001",
"PYTHONIOENCODING": "utf-8",
"LANG": "zh_CN.UTF-8"
}
-
CHCP 65001是 Windows 下切换控制台代码页为 UTF-8 的命令,VSCode 启动终端时会自动执行 - 不要依赖
terminal.integrated.defaultProfile.windows切换到 PowerShell 就万事大吉——PowerShell 默认仍是GBK,必须显式设环境变量
提交信息模板(.vscode/commit-template.md)里的中文要保存为 UTF-8 无 BOM
如果你用了提交模板(如 .vscode/commit-template.md),模板文件自身若存为 GBK 或 UTF-8 with BOM,VSCode 读取后插入到 Git 输入框时,可能触发二次编码错误。
- 用 VSCode 打开该模板文件,右下角状态栏确认编码显示为
UTF-8,且**没有 BOM**(如有,点击编码名 → “Save with Encoding” → 选UTF-8,不是UTF-8 with BOM) - 模板内容里避免使用全角空格、不可见控制符;纯 ASCII 标点 + 中文更稳妥
- 验证方式:在终端手动运行
git commit -t .vscode/commit-template.md,看是否乱码——这能排除 VSCode UI 层干扰
真正棘手的不是设置本身,而是 Git 编码配置、Windows 控制台代码页、VSCode 终端环境变量这三者必须严格对齐。少一个环节,中文提交信息就可能在“输入→存储→显示→日志查看”任一阶段崩掉。建议按顺序逐项验证,别跳步。











