
最近发现 VS Code 里有一个很实用,但很多人还没用上的能力:
你可以专门给 Copilot 的 Generate Commit Message 配自定义规则。
这意味着我们终于不用只靠 github.copilot.chat.localeOverride 碰运气了,而是可以直接告诉 Copilot:
很多人第一反应是把配置写进项目里的 .vscode/settings.json。
这样当然能用,但它只对当前仓库生效。
如果你的目标是:
只配置一次,之后所有项目都默认生成中文 commit message
那正确做法不是工作区配置,而是写进 VS Code 的 User Settings。
想让所有项目都生效,最稳妥的方式是:
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."
}
]
}
配完以后,当前 VS Code 用户配置下打开的项目都会默认带上这套规则。
你平时只需要:
git add 暂存改动它就会尽量按这套中文规范来生成提交信息。


这里最容易搞混的是 User Settings 和 Workspace Settings。
.vscode/settings.json 本质上是工作区设置,也就是仓库级配置。
它的优点是:
但它的缺点也很明显:
所以,如果你的诉求是“我自己电脑上的所有项目都启用”,答案就是:
不要只改 .vscode/settings.json,要改 User Settings。
不能只靠它。
github.copilot.chat.localeOverride 官方说明得很明确,它主要用于控制 Chat 响应语言。
也就是说,它能提高 Copilot 输出中文的概率,但它并不是专门为 commit message 格式控制设计的。
真正决定提交信息输出规则的,是:
github.copilot.chat.commitMessageGeneration.instructions
所以比较稳的做法是:
localeOverride 负责把整体语言环境尽量拉到中文commitMessageGeneration.instructions 负责约束提交信息格式、语言和输出风格这两个可以一起配,但真正的关键是后者。
如果你是想让某个仓库里的所有协作者都用同一套规则,那就不要放在 User Settings 里,而是放在仓库里。
比较推荐的做法是:
先在项目的 .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。
- 描述要短、准、清晰,避免“更新代码”“调整内容”这类空话。
- 默认单行输出。这个方案适合团队,但它解决的是“当前仓库统一规范”,不是“所有项目一次生效”。
所以你可以这样理解:
从 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
只输出最终结果,不要解释。这时候通常比“一键生成”更容易控格式。
commitlint 或发版校验如果你的项目接了:
commitlintsemantic-release那就要先确认它们是否接受 emoji + type 这种风格。
因为很多工具默认识别的是标准 Conventional Commits,例如:
feat: 新增文章发布流程
fix: 修复构建脚本错误而不一定接受:
✨ feat: 新增文章发布流程如果规则链路没有打通,就会出现一种很尴尬的情况:
Copilot 生成得挺漂亮,但 CI 不让你过。
所以在正式推广之前,最好先检查一下项目里的 commitlint.config.*、Git hook 或 CI 校验规则。
如果你不只在一台电脑上用 VS Code,还想把这套配置带到别的设备,最省事的方式是开启 Settings Sync。
这样你的用户设置会跟着 VS Code 账号同步,换机器后不用再手敲一遍。
当然,如果你本来就习惯把规则放仓库里,那仓库级方案也能天然共享给团队成员。
这件事真正的关键,不是“怎么在当前项目里配”,而是先分清楚你要解决的是哪一类问题:
.vscode/settings.json如果你只是想给自己电脑上的所有项目都启用中文 commit message,那么最推荐的落地方式其实很简单:
把 github.copilot.chat.commitMessageGeneration.instructions 写进 User Settings。
这才是真正意义上的“一次配置,所有项目启用”。
相关文章推荐:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。