Appearance
一招降维打击:用 Git + AI 告别手写 Commit Message
还在为写 Commit Message 发愁?还在
git log里看到一堆“update”、“fix”、“aaa” 想撞墙?今天教你一个组合拳,把 Git 和 AI 结合起来,从此 Commit Message 写得比谁都规范。
痛点:你每天都在踩的坑
你有没有经历过这种场景:
- 开发一个新功能,吭哧吭哧改了一堆文件
- 为了保险,每改一点就
git commit -m "wip"或者git commit -m "fix" - 最后功能终于跑通了,回头看:十几个小 commit,信息全是垃圾
- 想合并成一个大 commit 好好写个总结,但又忘了自己改了啥
于是你开始:
- 一个个文件翻,肉眼比对
- 对着
git diff发呆 - 最后憋出一句
feat: 优化功能了事
累不累?
TIP
根据 JetBrains 2024 年开发者报告,超过 60% 的开发者认为“写 Commit Message”是他们最不喜欢的 Git 操作之一。
解法:两步走,AI 帮你收尾
第一步:把多个 Commit 合并回工作区
假设你最近有 3 个小 commit,想一起处理:
方式一(一步到位,推荐):
bash
# 撤回最近 3 个 commit,改动直接回到工作区
git reset HEAD~3方式二(分步理解):
bash
# 先回到暂存区
git reset --soft HEAD~3
# 再从暂存区退回工作区(必须!否则 git diff 看不到改动)
git restore --staged .执行完后:
- ✅ 所有 commit 被撤销
- ✅ 所有改动完好无损地躺在工作区
- ✅ 可以用
git diff看到完整的变化
注意
git reset --soft 和 git reset --mixed 的区别:
--soft:改动回到暂存区(此时git diff为空)--mixed(默认,即git reset):改动直接回到工作区(git diff可见完整改动)
第二步:把 Diff 喂给 AI
bash
git diff > changes.txt打开 changes.txt,全选复制,丢给 AI,附上这样一句话:
请根据以下 git diff 内容,生成一个规范的 git branch 名称及 commit message 提交信息,使用 Conventional Commits 格式(feat/fix/docs/style/refactor 等),中文描述,要包含主要改动点和影响范围。
AI 会给你输出类似下面的这样的东西,它包含两部分可直接复制执行的信息:
Git Branch
bash
git checkout -b feat/order-wechat-alipay-integrationGit Commit Message
bash
git commit -m "feat(订单模块): 接入微信支付和支付宝支付
- 新增 PaymentService 接口及微信/支付宝实现类
- 添加支付回调处理逻辑
- 订单状态机扩展:待支付 → 支付中 → 已支付
- 新增支付超时取消机制
- 补充相关单元测试"完美! 比你手写详细十倍,还符合规范,而且 branch 和 commit 语义统一。
完整命令流(一键复制)
bash
# 1. 撤回最近 N 个 commit,改动回到工作区(N 改成你的数字)
git reset HEAD~3
# 2. 生成 diff 文件
git diff > changes.txt
# 3. 把 changes.txt 内容 + prompt 丢给 AI
# → 拿到 branch 创建命令 + commit 提交命令
# 4. 一键执行 AI 返回的两条命令
git checkout -b <AI生成的branch名>
git add .
git commit -m "<AI生成的commit message>"高级玩法:做成 Git 别名
把撤回操作固化成一个命令:
bash
git config --global alias.uncommit '!git reset --soft HEAD~1 && git restore --staged .'以后只需要:
bash
git uncommit
git diff > changes.txt
# 复制给 AI → 得到 branch + commit → 执行为什么这是降维打击?
| 对比项 | 肉眼做 | AI 做 |
|---|---|---|
| 改动多文件时 | 看得眼花 | 自动汇总 |
| 总结能力 | 容易漏细节 | 逐条列出 |
| 格式规范 | 懒得写 type 和 scope | 自动加 feat:、fix: |
| 分支命名 | 随手起名,随意 | 语义化、规范化 |
| branch 与 commit 一致性 | 可能对不上 | 完全统一 |
| 心情 | 烦躁 | 轻松 |
Commit Message 不再是你 Git 历史的污点,而是你项目最好的变更日志。
延伸思考:还能怎么玩?
这个工作流的核心思想可以迁移到更多场景:
1. Code Review 辅助
bash
git diff main...feature > review.txt
# 丢给 AI 生成 CR 要点2. 自动生成 Changelog
bash
git log --oneline --pretty=format:"%s" v1.0.0..HEAD > commits.txt
# 丢给 AI 按类型分组,输出 Markdown 格式的 Changelog3. 多语言提交信息
bash
git diff > changes.txt
# 让 AI 同时生成英文和中文两份 commit message写在最后
这个工作流的核心不是偷懒,而是把精力留给写代码,把总结交给机器。
Git 提供了精细化的操作工具(reset、restore、diff),AI 提供了强大的文本理解能力。把它们拼在一起,你就得到了一个自动化的、规范的、零脑力消耗的 Commit 生成器。
试试看,用一次你就回不去了。
INFO
如果觉得有用,欢迎分享给身边还在手写 “update” 的朋友。