Hi 大家好,我是 Node.js 生态 cz-git(Commitizen CLI 适配器) 与 czg (git commit CLI) 的作者 QB
项目 Github: github.com/Zhengqbbb/c…
本文我将介绍如何配置以及使用 CLI 结合 OpenAI 辅助生成你的 git commit 提交信息
使用 npx 快速体验
利用 npx 命令并填入你的 OpenAI API Key,在你的任何项目中运行下列命令可进行快速体验
OpenAI API Token 获取: platform.openai.com/account/api…
CZ_OPENAI_TOKEN="sk-xxxxx" npx czg ai
配置 OpenAI token
- platform.openai.com/account/api…
登陆并创建你的 OpenAI API 密钥,通常以sk-开头 - 运行命令
npx czg --openai-token=<API secret key>填入 OpenAI API 密钥完成设置
npx czg --openai-token=sk-xxxxx
全局使用
# Mac 用户可使用 `brew install czg`
npm install -g czg
# 设置token `czg --openai-token=sk-xxxxx`
# 设置完token后,在你的任何项目中,运行下列命令
czg ai
# 返回多个简短描述,并开启选择模式
git czg ai -N=5
项目依赖使用
npm install -D czg
# yarn add -D czg
# pnpm install -D czg
- 在 package.json 中添加 script 启动命令
- 在设置完 token 后运行启动命令
npm cz ai|yarn cz ai|pnpm cz ai
{
"scripts": {
"cz": "czg"
}
}
关于配置
- 关于 AI 相关的配置信息 可查看 文档 - AI 相关
- 关于项目或全局配置文件信息 可查看 配置模版
如果你想自定义配置发起 OpenAI 请求的描述信息,像支持中文本地化,可以使用配置项进行更改 aiQuestionCB,例如
module.exports = {
aiQuestionCB: ({ maxSubjectLength, diff }) => `用完整句子为以下 Git diff 代码写一个有见解并简洁的 Git 中文提交消息,不加任何前缀,并且内容不能超过 ${maxSubjectLength} 个字符: \`\`\`diff\n${diff}\n\`\`\``,
}
如何实现
- 运行 git diff 命令获取文件的差异,并结合描述信息,发送请求给 OpenAI GPT-3 API,来获取 AI 生成的简短描述
- 💡 灵感来源 aicommits 并修改了部分代码
cz-git 以及 czg 的其他特性:
我也会觉得使用 OpenAI 来写 commit message 不够准确,但是谁知道呢,说不定你偶尔就需要使用 AI 来生成一个模版,AI 的模式就是一个子命令,支持开启或关闭,所以欢迎尝试才知道是不是真的好用
- 💖 友好型命令行工具,支持在命令行搜索和选择,减少拼写错误
- ⚡️ 轻量级,高度自定义, 但输出格式遵循标准的 Conventional Commits 规范
- 📏 更好维护 monorepo 等工程化项目 与 commitlint 配合给予命令行的相关校验信息
- ⭐️ 支持在 commit 中添加 emoji
- 原文文档链接:cz-git.qbb.sh/zh/recipes/…
- 转载需注明 "原文文档链接"