🏠 首页 › 攻略 › 让AI帮你写Git Commit Message:5个Prompt模板,团队规范一次到位

让AI帮你写Git Commit Message:5个Prompt模板,团队规范一次到位

Commit message写得像流水账?5个AI Prompt模板直接复制,配合conventional commits规范,让每条提交信息都能被grep和changelog工具识别,团队代码库从此清爽。

让AI帮你写Git Commit Message:5个Prompt模板,团队规范一次到位

你有没有遇到过这种情况——

git log 一翻,满屏"fix bug"、“update”、“wip”、“改了一点”。

想找上次修登录逻辑的提交,花10分钟翻不动。

想生成changelog,手工整理更不现实。

问题出在commit message上。它不是给commit当时看的,是给3个月后的你和团队看的。

AI现在完全能帮你把这件事做到规范、可读、可追溯。下面5个prompt模板,直接复制进Claude、ChatGPT或者Claude Code里用。


模板一:基础版——把改动描述丢给AI

最简单的方式。你写一段人话描述,让AI格式化成规范的commit message。

请根据以下改动描述,生成一条符合 conventional commits 规范的 git commit message:

改动:修复了用户登录后 token 过期没有跳转登录页的问题,增加了 401 响应的
全局拦截,把 refresh token 的过期时间从 7 天改成 30 天。

要求:
- 类型必须是 fix
- 标题不超过 50 字符
- 正文用中文,说明改动原因和影响范围

AI 输出大概长这样:

fix(auth): 401响应全局拦截 + token刷新策略调整

原因:用户token过期后停留在当前页面,需要手动刷新才能重新登录。
改动:
- 增加 axios 响应拦截器,401 时自动跳转登录页
- refresh token TTL 从 7d 调整为 30d

影响范围:所有需要登录态的页面,已测试正常流程不受影响。

标题50字符以内,正文说清了why和what,changelog工具能直接解析类型和scope。


模板二:diff驱动——把git diff喂给AI

比手动描述更省事。跑一条命令,把diff直接喂给AI:

git diff --cached > /tmp/staged.diff
cat /tmp/staged.diff | claude -p "根据这个diff生成git commit message,
类型从 feat/fix/docs/refactor/test 中选最合适的,
标题不超过50字符,正文说明改动原因,用中文"

Claude Code 或者 Cursor 里也可以直接做:

读取当前 staged 改动,生成 commit message,遵循 conventional commits 规范

AI 看到的是真实的代码变更,比你"描述一下改了什么"要精准得多。


模板三:团队规范版——把团队规则写进prompt

每个团队的commit规范不一样。把规则直接写进system prompt,AI每次都会遵守。

你是一个 git commit message 生成器。请严格遵守以下团队规范:

1. 格式:<type>(<scope>): <description>
2. type 只能是:feat, fix, refactor, docs, test, chore
3. scope 必须是模块名,比如 auth, payment, user, api
4. 标题不超过 60 字符(英文)或 30 个中文字符
5. 标题末尾加句号
6. 正文(可选)说明改动原因,用"因为...所以..."句式
7. 关联的 issue 写在正文末尾,格式:Closes #123
8. 中文描述,代码和术语用英文

现在请根据以下改动生成 commit message:

[粘贴你的 diff 或描述]

这个prompt放在 ~/.claude/commands/git-commit.md 里,以后每次只需要输 /git-commit 就行。


模板四:Conventional Changelog 专用

如果你的团队用 conventional-changelog 自动生成changelog,commit message的格式要求更严格:

请生成一条 conventional commits 格式的 commit message,
用于 conventional-changelog 工具解析。

改动内容:[描述]

注意:
- type 必须是 feat/fix/perf/refactor/style/test/build/ci/docs/chore/revert 之一
- 破坏性变更必须用 ! 标记在 type 后面,比如 feat(api)!:
- 破坏性变更的说明放在脚注里,BREAKING CHANGE: [说明]
- 正文可以用多段,但每行不超过 72 字符

AI 生成的格式能直接被 conventional-changelog 解析,不用再手动修。


模板五:批量回溯——给历史提交补规范

代码库有历史,老的commit message全是"update"、“fix”。批量整理很痛苦。

# 导出最近 50 条 commit 的 diff 摘要
git log --oneline -50 > /tmp/recent.log

# 让 AI 逐条重写
cat /tmp/recent.log | claude -p "每行是一个 commit hash 和标题,
请根据 hash 对应的实际改动(用 git show 查看),
重写一条规范的 conventional commits message。
输出格式:hash | 新message"

把输出的新message整理成文件,用 git rebase -i 批量修改历史提交信息。

注意:只有私有仓库或未发布的功能分支才应该重写历史。主干上不要动。


几个容易踩的坑

AI 会瞎猜 scope。 你改了 src/api/payment.ts,AI 可能给你标 scope: api,也可能标 scope: payment。在prompt里明确scope的命名规则,比如"scope必须是 src/ 下的一级目录名"。

破坏性变更 AI 经常漏标。 改了公共API的参数、删了导出函数、改了数据库字段——这些 AI 大概率不会主动标 !。在prompt里加一句"判断是否包含破坏性变更,有就加!“能好很多。

不要 100% 信任 AI 的类型判断。 它有时候把 refactor 标成 feat,把 docs 标成 chore。标题过一眼再push,别盲目接受。

中文长度注意。 中文一个字符算两个宽度,50字符限制对中文很紧。建议30个中文字符以内,或者标题用英文。


最终效果

用了两周之后,你的 git log 会变成这样:

a3f2c1b feat(auth): 增加 refresh token 自动续期,TTL 30天
9e4d2fa fix(api): 修复 order/list 接口分页参数 off-by-one
c71b8ee refactor(db): 将 user 表查询改用批量 IN 替代 N+1
e02f5a1 docs(readme): 更新本地开发环境配置说明

grep “fix” 就能找到所有bug修复。changelog工具跑一下,自动生成版本说明。

你的 git log 现在是什么样的?评论区发一条我看看。