让 OpenAI 辅助生成你的 git commit message

1,118 阅读2分钟

Hi 大家好,我是 Node.js 生态 cz-git(Commitizen CLI 适配器) 与 czg (git commit CLI) 的作者 QB

项目 Github: github.com/Zhengqbbb/c…

本文我将介绍如何配置以及使用 CLI 结合 OpenAI 辅助生成你的 git commit 提交信息

demo.gif

使用 npx 快速体验

利用 npx 命令并填入你的 OpenAI API Key,在你的任何项目中运行下列命令可进行快速体验 OpenAI API Token 获取: platform.openai.com/account/api…

CZ_OPENAI_TOKEN="sk-xxxxx" npx czg ai

配置 OpenAI token

  1. platform.openai.com/account/api…
    登陆并创建你的 OpenAI API 密钥,通常以 sk- 开头
  2. 运行命令 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
  1. 在 package.json 中添加 script 启动命令
  2. 在设置完 token 后运行启动命令 npm cz ai | yarn cz ai | pnpm cz ai
{
  "scripts": {
    "cz": "czg"
  }
}

关于配置

如果你想自定义配置发起 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