Smart Commit 是一个 AI 驱动的 Git 提交信息生成工具,利用 LLM 对代码变更进行总结,生成有意义的提交信息。
主要能力
- 修改上一条提交(Amend Last Commit):总结已暂存或未暂存的变更,并修改上一条提交信息。
- 压缩提交(Squash Commits):总结最近 N 条提交,创建一条合并后的提交。
- 交互式提交(Interactive Commit):与用户确认要包含的文件,然后总结变更并创建新提交。
使用方式
新提交
- 执行 git status 显示变更文件并请用户确认。
- 确认后,由 LLM 总结变更。
- 使用生成的提交信息创建提交。
修改提交(Amend)
# 获取待修改的变更 diff
git diff --cached # 已暂存
git diff HEAD~1 # 与上一条提交比较
# LLM 总结后执行
git commit --amend -m "new message"
压缩提交(Squash)
# 获取最近 N 条提交的信息与 diff
git log -n N --format="%H %s"
# LLM 总结后执行
git reset --soft HEAD~N
git commit -m "consolidated message"
工作流决策树
用户需要 Git 提交帮助? ├─ "amend" 或 "修改"? → 修改工作流 ├─ "squash" 或 "合并" + 数字? → 压缩工作流 └─ 新提交? → 交互式工作流
修改工作流
- 获取变更:git diff --cached(已暂存)或 git diff HEAD~1(自上次提交以来的所有变更)
- 使用 references/prompts.md 中 "Amend Commit" 部分的提示词发送给 LLM
- 用户审核建议的提交信息
- 执行 git commit --amend -m "message"
压缩工作流
- 获取最近 N 条提交:git log -n N --format="%H|%s|%an|%ad"
- 获取合并 diff:git diff HEAD~N..HEAD
- 使用 references/prompts.md 中 "Squash Commits" 部分的提示词发送给 LLM
- 用户审核建议的提交信息
- 执行 git reset --soft HEAD~N && git commit -m "message"
交互式提交工作流
- 向用户显示 git status
- 请用户确认要包含哪些文件
- 获取已确认文件的 diff
- 使用 references/prompts.md 中 "New Commit" 部分的提示词发送给 LLM
- 用户审核建议的提交信息
- 执行 git add <files> && git commit -m "message"
LLM 提示词
参见 references/prompts.md,其中包含:
- 新提交信息生成
- 修改提交信息生成
- 压缩提交信息生成
每个提示词包含:
- Git diff 输入格式
- 输出格式要求
- 风格规范(如 conventional commits 等)