使用大模型处理 git diff 生成 commit msg 的流程如下:

  1. 获取 git diff 信息:
  • 可以使用 git diff > git.diff 将 diff 信息写入文件。
  • 可以使用 git diff | clip (Windows) 将 diff 信息复制到剪贴板。

git diff 获取的是没有提交到暂存区的更改,如果想要获取已经提交到暂存区的更改,可以使用 git diff --cached

  1. 准备提示词:
  • 提示词需要包含 commit 规则 [^1]。例子如下:
用户会输入 git diff,请你生成 commit msg,可以根据更改内容生成一些备注

我的 commit 规则:
module.exports = {
 rules: {
  'type-enum': [
   2,
   'always',
   [
    'feat', // 新功能
    'fix', // 修复
    'docs', // 文档变更
    'style', // 代码格式
    'refactor', // 重构
    'perf', // 性能优化
    'test', // 增加测试
    'chore', // 构建过程或辅助工具的变动
    'revert', // 回退
    'build', // 打包
   ],
  ],
  'type-case': [2, 'always', 'lower-case'],
  'type-empty': [2, 'never'],
  'scope-empty': [0],
  'scope-case': [0],
  'subject-full-stop': [0],
  'subject-case': [0],
  'header-max-length': [0],
 },
};
  1. 发送给大模型:git diff 信息和提示词一起发送给大模型,获取 commit msg。
  2. 使用 Cherry Studio (可选):
  • 可以使用 Cherry Studio 创建 commit msg 生成助手


具体效果

把指令保存为 alias

在 windows 中:

git config --global alias.gc "!git diff | clip"
git config --global alias.gcc "!git diff --cached | clip"

使用

git gc
git gcc