首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >一次配置让Copilot为所有项目生成中文CommitMessage

一次配置让Copilot为所有项目生成中文CommitMessage

原创
作者头像
程序员NEO
发布2026-03-28 12:53:43
发布2026-03-28 12:53:43
480
举报

最近发现 VS Code 里有一个很实用,但很多人还没用上的能力:

你可以专门给 Copilot 的 Generate Commit Message 配自定义规则。

这意味着我们终于不用只靠 github.copilot.chat.localeOverride 碰运气了,而是可以直接告诉 Copilot:

  • 提交信息必须用简体中文
  • 必须按固定格式输出
  • 只能使用指定的 type 和 emoji
  • 只输出最终结果,不要解释

很多人第一反应是把配置写进项目里的 .vscode/settings.json

这样当然能用,但它只对当前仓库生效。

如果你的目标是:

只配置一次,之后所有项目都默认生成中文 commit message

那正确做法不是工作区配置,而是写进 VS Code 的 User Settings

先说结论

想让所有项目都生效,最稳妥的方式是:

  1. 打开 VS Code 命令面板(Windows / Linux 用 Ctrl + Shift + P,macOS 用 Cmd + Shift + P,或者直接按 F1
  2. 执行 Preferences: Open User Settings (JSON)
  1. 把下面这段配置放进去
代码语言: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 用户配置下打开的项目都会默认带上这套规则。

你平时只需要:

  1. git add 暂存改动
  2. 打开 Source Control
  3. 点击 Copilot 的 Generate Commit Message

它就会尽量按这套中文规范来生成提交信息。

为什么 .vscode/settings.json 不能“一次配置,全部项目生效”

这里最容易搞混的是 User SettingsWorkspace 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 里,而是放在仓库里。

比较推荐的做法是:

先在项目的 .vscode/settings.json 里引用一个 Markdown 规则文件:

代码语言:json
复制
{
  "github.copilot.chat.commitMessageGeneration.instructions": [
    {
      "file": ".github/commit-message-instructions.md"
    }
  ]
}

然后新建 .github/commit-message-instructions.md

代码语言:markdown
复制
# 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。
- 描述要短、准、清晰,避免“更新代码”“调整内容”这类空话。
- 默认单行输出。

这个方案适合团队,但它解决的是“当前仓库统一规范”,不是“所有项目一次生效”。

所以你可以这样理解:

  • 想个人全局生效,用 User Settings
  • 想团队仓库共享,用 Workspace Settings + Markdown 规则文件

实际使用时的两个提醒

1. 这个功能已经很正规,但不保证 100% 每次都听话

从 VS Code 1.96 开始,官方已经支持对 commit message 生成配置专门的 instructions。

但从公开 issue 来看,Copilot 在某些情况下还是可能:

  • 忽略语言要求
  • 忽略格式要求
  • 偶尔输出英文

所以这套方案的定位应该是:

当前最官方、最正规的配置方式,但不是绝对强制。

如果你碰到它偶尔不听话,最稳的兜底办法是直接在 Copilot Chat 里手动发指令,例如:

代码语言:json
复制
请根据当前已暂存改动,严格按以下格式生成一条 git commit message:
<emoji> <type>: <中文简短描述>

只允许使用这些类型:
✨ feat
🐛 fix
📝 docs
♻️ refactor
⚡ perf
🧑‍💻 dx
🔨 workflow
🏷️ types
🚧 wip
✅ test
🔨 build
👷 ci
❓ chore
⬆️ deps
🔖 release

只输出最终结果,不要解释。

这时候通常比“一键生成”更容易控格式。

2. 先看看你项目有没有 commitlint 或发版校验

如果你的项目接了:

  • commitlint
  • semantic-release
  • CI 中的 Conventional Commits 校验

那就要先确认它们是否接受 emoji + type 这种风格。

因为很多工具默认识别的是标准 Conventional Commits,例如:

代码语言:json
复制
feat: 新增文章发布流程
fix: 修复构建脚本错误

而不一定接受:

代码语言:json
复制
✨ 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。

这才是真正意义上的“一次配置,所有项目启用”。

参考链接

相关文章推荐

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先说结论
  • 为什么 .vscode/settings.json 不能“一次配置,全部项目生效”
  • localeOverride 能不能单独解决问题
  • 如果你想团队统一,而不是个人全局
  • 实际使用时的两个提醒
    • 1. 这个功能已经很正规,但不保证 100% 每次都听话
    • 2. 先看看你项目有没有 commitlint 或发版校验
  • 多台机器怎么办
  • 最后总结
  • 参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档