Project Icon

gptcommit

基于GPT-3的自动Git提交信息生成工具

gptcommit是一个基于GPT-3的Git钩子工具,可自动生成清晰、全面的提交信息。它支持自定义OpenAI API、选择语言模型和设置输出语言等多项配置。该工具提供代理支持,适用于GitHub Codespaces,能有效提升Git工作流效率。gptcommit让开发者更专注于代码编写,简化了版本控制过程。

gptcommit

Github贡献者 Github星标 CI

crates.io状态 crates.io下载量 Rust依赖状态

一个使用GPT-3编写提交信息的git prepare-commit-msg钩子。使用这个工具,你可以轻松生成清晰、全面且描述性的提交信息,让你专注于编写代码。

查看公告博文

演示

asciicast

安装

  1. 使用cargo在本地安装此工具(推荐)。
cargo install --locked gptcommit

或在macOS上使用homebrew

brew install zurawiki/brews/gptcommit
  1. 在你的git仓库中,运行以下命令将gptcommit安装为git prepare-commit-msg钩子。你需要提供一个OpenAI API密钥来完成安装。
gptcommit install

使用方法

要使用gptcommit,只需像往常一样运行git commit。钩子将自动使用像GPT这样的大型语言模型为你生成提交信息。如果你对生成的信息不满意,可以在提交前随时编辑。

注意:默认情况下,gptcommit使用GPT-3模型。请确保你的OpenAI账户有足够的额度来使用它。

功能

gptcommit支持多种配置选项,这些选项从$HOME/.config/gptcommit/config.toml中读取。 配置按以下顺序应用:

  • $HOME/.config/gptcommit/config.toml读取的用户设置。
  • 从仓库克隆的$GIT_ROOT/.git/gptcommit.toml中读取的设置。
  • GPTCOMMIT__*开头的环境变量。

使用gptcommit config keys查看所有可用的配置选项。

设置OpenAI API密钥

持久化保存你的OpenAI密钥

gptcommit config set openai.api_key sk-...

或仅为你的本地仓库设置:

gptcommit config set --local openai.api_key sk-...

你也可以通过GPTCOMMIT__OPENAI__API_KEY环境变量配置此设置。

为了保持与其他OpenAI客户端的兼容性,我们支持OPENAI_API_KEY环境变量。这将具有最高优先级。

设置自定义OpenAI API基础URL

持久化保存你的OpenAI密钥

gptcommit config set openai.api_base https://...

或仅为你的本地仓库设置:

gptcommit config set --local openai.api_base https://...

你也可以通过GPTCOMMIT__OPENAI__API_BASE环境变量配置此设置。

为了保持与其他OpenAI客户端的兼容性,我们支持OPENAI_API_BASE环境变量。这将具有最高优先级。

尝试不同的OpenAI模型

gptcommit默认使用text-davinci-003。可以按如下方式配置模型以使用其他模型

gptcommit config set openai.model text-davinci-002

你也可以通过GPTCOMMIT__OPENAI__MODEL环境变量配置此设置。

有关公共OpenAI模型的列表,请查看OpenAI文档。你还可以引入自己的微调模型。

设置摘要语言

gptcommit默认使用英语。可以按如下方式配置语言以使用其他语言

gptcommit config set output.lang zh-cn

目前支持的语言有:

语言代码语言
en英语
zh-cn简体中文
zh-tw繁体中文
ja日语

允许在修改提交时重新生成摘要

gptcommit config set allow-amend true

代理配置支持

使用以下方式配置OpenAI代理

gptcommit config set openai.proxy "my_http_proxy...."

常见问题 / 常见疑问

如何减少我的 OpenAI 使用费用?

在当前设计中,gptcommit 会发出 N+2 个提示,其中 N 是修改文件数量且差异在最大令牌限制内。其他两个提示是标题和摘要。

OpenAI 的完成功能按发送和生成的"令牌"计费。每个令牌的价格取决于所使用的模型。生成的令牌数量通常是可预测的(因为提交消息通常只有这么大),但 gptcommit 可能会以差异数据的形式发送大量令牌。

目前,我看到两个简单的解决方案来降低成本:

  • 使用 openai.model 配置选项切换到不同的模型
  • 减少发送给 OpenAI 的提示和差异数据的大小

OpenAI 的定价页面可以在以下网址找到: https://openai.com/api/pricing/#faq-completions-pricing

当我提交时 git 钩子没有运行

默认情况下,git 钩子只会在新提交时运行。 如果设置了模板或正在修改提交,默认情况下 git 钩子会跳过。

因为 git 钩子检测到用户提供了自己的模板,我们确保不会用 GPT 覆盖它。你可以通过确保 git config --local commit.template 为空来移除提交模板。

你可以通过以上配置允许 gptcommit 总结修改后的提交。

在 GitHub Codespaces 中安装

你首先需要安装 Rust 和 cargo 工具链。记得配置你的 API 密钥。

curl https://sh.rustup.rs -sSf | sh
bash
cargo install --locked gptcommit

# 插入你的 OpenAI API 密钥 https://platform.openai.com/account/api-keys
gptcommit config set openai.api_key # sk-...

衍生作品

所有这些很棒的项目都是使用 gptcommit 构建的。

遇到任何 bug?

如果你遇到任何 bug 或有任何改进建议,请在仓库上开一个 issue。

许可证

本项目基于 MIT 许可证 授权。


详细帮助用法

$ gptcommit -h
用法:gptcommit [选项] <命令>

命令:
  install             安装 git 钩子
  uninstall           卸载 git 钩子
  config              读取和修改设置
  prepare-commit-msg  在 prepare-commit-msg 钩子上运行
  help                打印此消息或给定子命令的帮助

选项:
  -v, --verbose  启用详细日志记录
  -h, --help     打印帮助
  -V, --version  打印版本
$ gptcommit install -h
安装 git 钩子

用法:gptcommit install [选项]

选项:
  -v, --verbose  启用详细日志记录
  -h, --help     打印帮助
  -V, --version  打印版本
$ gptcommit uninstall -h
卸载 git 钩子

用法:gptcommit uninstall [选项]

选项:
  -v, --verbose  启用详细日志记录
  -h, --help     打印帮助
  -V, --version  打印版本
$ gptcommit config -h
读取和修改设置

用法:gptcommit config [选项] <命令>

命令:
  keys    列出所有配置键
  list    列出所有配置值
  get     读取配置值
  set     设置配置值
  delete  清除配置值
  help    打印此消息或给定子命令的帮助

选项:
  -v, --verbose  启用详细日志记录
  -h, --help     打印帮助
  -V, --version  打印版本
$ gptcommit config keys
allow_amend
file_ignore
model_provider
openai.api_base
openai.api_key
openai.model
openai.proxy
openai.retries
output.conventional_commit
output.conventional_commit_prefix_format
output.lang
output.show_per_file_summary
prompt.commit_summary
prompt.commit_title
prompt.conventional_commit_prefix
prompt.file_diff
prompt.translation
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号