vscode中中文提交信息乱码的根本原因是git未显式启用utf-8编码支持:需执行git config --global i18n.commitencoding utf-8和i18n.logoutputencoding utf-8,并确保终端、ci工具链统一使用utf-8,否则git log或自动化流程将解析失败。

VSCode 中直接输入中文提交信息完全可行,但实际协作中常因编码、工具链或自动化流程不兼容导致乱码、解析失败或 CI 报错——问题不在 VSCode 本身,而在 Git 配置和下游系统对 UTF-8 的信任程度。
Git 配置必须显式启用 UTF-8
VSCode 默认使用系统 locale,Windows 中文用户常默认为 GBK,而 Git 内部默认用 UTF-8 解析提交信息。若未统一,git log 可能显示乱码,CI 工具(如 Jenkins、GitHub Actions)解析 commit-msg 钩子时也可能失败。
执行以下命令强制 Git 使用 UTF-8:
git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8
注意:i18n.logoutputencoding 仅影响 git log 输出,不影响存储;真正关键的是 i18n.commitencoding,它告诉 Git “提交时按 UTF-8 存储”。
- Linux/macOS 用户通常已默认 UTF-8,但建议仍运行上述命令确认
- Windows 用户务必执行,否则即使 VSCode 输入框里看着正常,
git log --oneline也可能显示问号或方块 - 团队项目中,应在项目根目录的
.git/config里也加一遍(不带--global),避免依赖个人全局配置
VSCode 提交框里输中文,但终端 git log 还是乱码?
这是最典型的表象:你在 VSCode 源代码管理面板里写“修复用户登录超时”,点击提交成功,但回到集成终端敲 git log --oneline 却看到 6a2b3c4 ???????????。
根本原因不是 VSCode,而是终端自身不支持 UTF-8 渲染:
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
- Windows Terminal 或 Windows 11 自带终端默认支持 UTF-8,但旧版 PowerShell/CMD 不支持 —— 建议切换到 Windows Terminal 并设为默认
- macOS 终端需检查:终端 > 设置 > 描述文件 > 文本 > 字符编码 → 设为 Unicode (UTF-8)
- VSCode 内置终端(Terminal)需在设置中搜索
terminal integrated default profile,确保选的是支持 UTF-8 的 shell(如 zsh、bash),而非老旧的 cmd.exe
验证方式:在终端里执行 echo "测试中文",能正常显示即终端 OK;再执行 git log -1 --pretty=%B,应原样输出你输入的中文。
Conventional Commits + 中文描述的混合写法是否安全?
可以,但要守住边界:类型前缀(如 feat、fix)必须英文,冒号后描述可用中文。这是约定式提交(Conventional Commits)规范允许的,且被主流工具(Husky、Commitlint、Semantic Release)广泛支持。
正确示例:
feat(用户中心): 增加手机号一键登录功能 fix(支付网关): 修复微信回调签名验证失败
错误示例:
特性(用户中心): 增加手机号登录 ← 类型用中文,Commitlint 会拒绝 fix(用户中心):修复登录问题 ← 使用中文全角冒号,钩子可能匹配失败
- 前缀必须小写英文,后跟英文半角冒号
: - VSCode 中可配合
Commit Message Editor扩展,自动补全前缀并校验格式 - 如果团队用 Husky + commitlint,确保
commitlint.config.js中rules启用了type-case和type-enum,但不对subject(描述部分)做语言限制
真正容易被忽略的是:Git 仓库本身不校验编码,但下游所有自动化环节(CI 日志归档、PR 标题提取、变更日志生成)都默认按 UTF-8 解读。一旦某台机器或某个工具链环节没设对,中文就变成不可逆的乱码——不是修一次 VSCode 就能解决的事,得从 Git 配置、终端、CI 镜像三端对齐。










