最近发现 VS Code 里有一个很实用,但很多人还没用上的能力:
你可以专门给 Copilot 的 Generate Commit Message 配自定义规则。
这意味着我们终于不用只靠 github.copilot.chat.localeOverride 碰运气了,而是可以直接告诉 Copilot:
提交信息必须用简体中文必须按固定格式输出只能使用指定的 type 和 emoji只输出最终结果,不要解释
很多人第一反应是把配置写进项目里的 .vscode/settings.json。
这样当然能用,但它只对当前仓库生效。
如果你的目标是:
只配置一次,之后所有项目都默认生成中文 commit message
那正确做法不是工作区配置,而是写进 VS Code 的 User Settings。
先说结论
想让所有项目都生效,最稳妥的方式是:
打开 VS Code 命令面板(Windows / Linux 用
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
Ctrl + Shift + P,macOS 用 Cmd + Shift + P,或者直接按 F1)执行 Preferences: Open User Settings (JSON)
{ "github.copilot.chat.localeOverride": "zh-CN", "github.copilot.chat.commitMessageGeneration.instructions": [ { "text": "Always generate git commit messages in Simplified Chinese." }, { "text": "Follow this exact format: <emoji><type>: ." }, { "text": "Use only these types and emojis: ✨ feat, ? fix, ? docs, ♻️ refactor, ⚡ perf, ?? dx, ? workflow, ?️ types, ? wip, ✅ test, ? build, ? ci, ❓ chore, ⬆️ deps, ? release." }, { "text": "Pick the single most appropriate type based on the main intent of the staged changes." }, { "text": "Do not output English. Do not output explanations. Do not output bullet points. Output only the final commit message." }, { "text": "Keep the subject concise, natural, and professional in Chinese." } ]}</type></emoji>

配完以后,当前 VS Code 用户配置下打开的项目都会默认带上这套规则。
你平时只需要:
先 git add 暂存改动打开 Source Control点击 Copilot 的 Generate Commit Message
它就会尽量按这套中文规范来生成提交信息。


为什么 .vscode/settings.json 不能“一次配置,全部项目生效”
这里最容易搞混的是 User Settings 和 Workspace Settings。
.vscode/settings.json 本质上是工作区设置,也就是仓库级配置。
它的优点是:
可以随项目一起提交到 Git团队成员拉代码后能共享同一套规则很适合团队统一规范
但它的缺点也很明显:
只对当前项目有效你新建一个仓库,还得再配一次如果你同时维护很多项目,会很重复
所以,如果你的诉求是“我自己电脑上的所有项目都启用”,答案就是:
不要只改 .vscode/settings.json,要改 User Settings。
localeOverride 能不能单独解决问题
不能只靠它。
github.copilot.chat.localeOverride 官方说明得很明确,它主要用于控制 Chat 响应语言。
也就是说,它能提高 Copilot 输出中文的概率,但它并不是专门为 commit message 格式控制设计的。
真正决定提交信息输出规则的,是:
github.copilot.chat.commitMessageGeneration.instructions
所以比较稳的做法是:
localeOverride 负责把整体语言环境尽量拉到中文commitMessageGeneration.instructions 负责约束提交信息格式、语言和输出风格
这两个可以一起配,但真正的关键是后者。
如果你想团队统一,而不是个人全局
如果你是想让某个仓库里的所有协作者都用同一套规则,那就不要放在 User Settings 里,而是放在仓库里。
比较推荐的做法是:
复杂任务工程化执行框架 — Sprint Contract 协商、三代理角色切换、对抗性评估、任务分解与上下文管理。3+ 文件修改或多模块设计时自动触发,防止复杂任务中的上下文污染和自我评估偏差。
先在项目的 .vscode/settings.json 里引用一个 Markdown 规则文件:
{ "github.copilot.chat.commitMessageGeneration.instructions": [ { "file": ".github/commit-message-instructions.md" } ]}
然后新建 .github/commit-message-instructions.md:
# Git Commit Message Rules- 所有 git commit message 必须使用简体中文。- 严格使用以下格式输出:`<emoji><type>: `- 只允许使用以下类型与前缀: - `✨ feat: 添加新功能` - `? fix: 修复 bug` - `? docs: 对文档进行修改` - `♻️ refactor: 代码重构` - `⚡ perf: 提高性能的代码修改` - `?? dx: 优化开发体验` - `? workflow: 工作流变动` - `?️ types: 类型声明修改` - `? wip: 工作进行中` - `✅ test: 测试用例添加及修改` - `? build: 构建系统或依赖变更` - `? ci: CI 配置变更` - `❓ chore: 其它杂项修改` - `⬆️ deps: 依赖项修改` - `? release: 发布新版本`- 只输出最终 commit message,不要附加解释。- 优先根据本次暂存改动的主要目的选择 type,不要罗列多个 type。- 描述要短、准、清晰,避免“更新代码”“调整内容”这类空话。- 默认单行输出。</type></emoji>
这个方案适合团队,但它解决的是“当前仓库统一规范”,不是“所有项目一次生效”。
所以你可以这样理解:
想个人全局生效,用 User Settings想团队仓库共享,用 Workspace Settings + Markdown 规则文件
实际使用时的两个提醒
1. 这个功能已经很正规,但不保证 100% 每次都听话
从 VS Code 1.96 开始,官方已经支持对 commit message 生成配置专门的 instructions。
但从公开 issue 来看,Copilot 在某些情况下还是可能:
忽略语言要求忽略格式要求偶尔输出英文
所以这套方案的定位应该是:
当前最官方、最正规的配置方式,但不是绝对强制。
如果你碰到它偶尔不听话,最稳的兜底办法是直接在 Copilot Chat 里手动发指令,例如:
请根据当前已暂存改动,严格按以下格式生成一条 git commit message:<emoji><type>: 只允许使用这些类型:✨ feat? fix? docs♻️ refactor⚡ perf?? dx? workflow?️ types? wip✅ test? build? ci❓ chore⬆️ deps? release只输出最终结果,不要解释。</type></emoji>
这时候通常比“一键生成”更容易控格式。
2. 先看看你项目有没有 commitlint 或发版校验
如果你的项目接了:
commitlintsemantic-releaseCI 中的 Conventional Commits 校验
那就要先确认它们是否接受 emoji + type 这种风格。
因为很多工具默认识别的是标准 Conventional Commits,例如:
feat: 新增文章发布流程fix: 修复构建脚本错误
而不一定接受:
✨ feat: 新增文章发布流程
如果规则链路没有打通,就会出现一种很尴尬的情况:
Copilot 生成得挺漂亮,但 CI 不让你过。
所以在正式推广之前,最好先检查一下项目里的 commitlint.config.*、Git hook 或 CI 校验规则。
多台机器怎么办
如果你不只在一台电脑上用 VS Code,还想把这套配置带到别的设备,最省事的方式是开启 Settings Sync。
这样你的用户设置会跟着 VS Code 账号同步,换机器后不用再手敲一遍。
当然,如果你本来就习惯把规则放仓库里,那仓库级方案也能天然共享给团队成员。
最后总结
这件事真正的关键,不是“怎么在当前项目里配”,而是先分清楚你要解决的是哪一类问题:
想让当前仓库生效,用 .vscode/settings.json想让所有项目一次生效,用 User Settings JSON想让团队协作统一,用 仓库内规则文件
如果你只是想给自己电脑上的所有项目都启用中文 commit message,那么最推荐的落地方式其实很简单:
把 github.copilot.chat.commitMessageGeneration.instructions 写进 User Settings。
这才是真正意义上的“一次配置,所有项目启用”。
参考链接
VS Code 1.96 更新说明Copilot Settings 参考文档Copilot Custom Instructions 文档VS Code Settings 文档相关 issue:commit message 有时不稳定遵循指令
相关文章推荐:
智谱 GLM-4.7 编程第一LangChain4j 结构化输出实战让 AI 不再失忆Claude Code 免费指南Agent Skills,让 AI 像老员工一样靠谱










