news 2026/6/10 16:02:01

Git 提交记录乱糟糟?写个 AI 脚本自动生成 Commit Message,CTO 看了都说好

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Git 提交记录乱糟糟?写个 AI 脚本自动生成 Commit Message,CTO 看了都说好

🤯 前言:你的git log是不是也是这样?

周五快下班了,你匆忙修复了一个 Bug,提交代码:
git commit -m "fix"
过了十分钟,发现还有个标点符号不对:
git commit -m "update"
又过了一会,合并代码:
git commit -m "111"

一个月后,CTO 进行代码审查(Code Review),看着这堆"fix", "update", "111"的提交记录,脸黑得像锅底。
烂的提交记录,不仅让回溯历史变得不可能,更显得你极其不专业。

但说实话,写 Commit Message 是真的很烦。
今天,我们用 AI 把它解决了!写一个 Python 脚本,自动读取你的代码变更,自动生成标准化的提交信息。从此,你的 Git 记录比教科书还漂亮。


📐 核心标准:什么是优雅的 Commit?

在让 AI 干活之前,我们得先定规矩。目前业界最通用的是Conventional Commits规范。

格式如下:
<type>(<scope>): <subject>

  • feat: 新功能
  • fix: 修补 Bug
  • docs: 文档修改
  • style: 格式(不影响代码运行的变动)
  • refactor: 重构(即不是新增功能,也不是修改 bug 的代码变动)
  • chore: 构建过程或辅助工具的变动

我们要做的,就是让 AI 自动分析git diff,然后填空。


🛠️ 实现原理:给 Git 装个“大脑”

我们要写的脚本逻辑非常简单,本质上是一个RAG(检索增强生成)的微型应用。

流程图 (Mermaid):

Diff 文本
Prompt + Diff
生成规范 Message
确认
1. 开发完成 git add .
2. 获取暂存区差异 git diff --cached
3. Python 脚本处理
4. 调用 LLM API (GPT/DeepSeek)
5. 开发者确认/修改
6. 执行 git commit

💻 代码实战:Python 脚本一把梭

我们需要用到subprocess库来执行 Git 命令,以及openai库(或者简单的requests)来调用大模型。

1. 环境准备
pipinstallopenai

注:你可以使用 OpenAI,也可以使用 DeepSeek、通义千问等兼容 OpenAI 格式的 API,甚至可以用本地的 Ollama。

2. 编写git_ai.py
importsubprocessimportsysfromopenaiimportOpenAI# === 配置区域 ===# 建议将 KEY 放在环境变量中,不要硬编码API_KEY="sk-xxxxxxxxxxxxxxxxxxxx"BASE_URL="https://api.deepseek.com/v1"# 这里以 DeepSeek 为例,便宜又大碗MODEL_NAME="deepseek-chat"client=OpenAI(api_key=API_KEY,base_url=BASE_URL)defget_git_diff():"""获取暂存区的代码差异"""# 检查是否有文件被 addtry:subprocess.check_call(['git','diff','--cached','--quiet'])print("⚠️ 暂存区为空,请先执行 git add")sys.exit(1)exceptsubprocess.CalledProcessError:pass# 有差异,继续# 获取 diff 内容result=subprocess.run(['git','diff','--cached'],capture_output=True,text=True,encoding='utf-8'# 防止中文乱码)returnresult.stdoutdefgenerate_commit_message(diff_content):"""让 AI 根据 Diff 生成 Message"""iflen(diff_content)>3000:# 如果差异太大,截取一部分,防止 Token 爆炸diff_content=diff_content[:3000]+"\n...(truncated)"system_prompt=""" 你是一个资深的 Git 专家。请根据用户的代码变更(git diff),生成一条符合 Conventional Commits 规范的提交信息。 规则: 1. 格式:<type>(<scope>): <subject> 2. type 只能是:feat, fix, docs, style, refactor, perf, test, chore, build, ci。 3. scope 可选,表示修改的模块。 4. subject 简短描述变更内容,使用中文。 5. 不要输出任何解释性文字,只输出 Commit Message 本身。 """response=client.chat.completions.create(model=MODEL_NAME,messages=[{"role":"system","content":system_prompt},{"role":"user","content":f"代码变更如下:\n{diff_content}"}],temperature=0.7)returnresponse.choices[0].message.content.strip()defmain():print("🤖 正在分析代码差异...")diff=get_git_diff()print("🧠 AI 正在思考 Commit Message...")commit_msg=generate_commit_message(diff)print(f"\n✨ 生成建议:\n\n\t{commit_msg}\n")# 交互式确认choice=input("👉 是否使用此消息提交?(y/n/e[edit]): ").lower()ifchoice=='y':subprocess.run(['git','commit','-m',commit_msg])print("✅ 提交成功!")elifchoice=='e':new_msg=input("请输入新的 Commit Message: ")subprocess.run(['git','commit','-m',new_msg])print("✅ 提交成功!")else:print("❌ 已取消提交")if__name__=="__main__":main()

🚀 进阶玩法:配置 Git Alias (别名)

每次都要输python git_ai.py太麻烦了。我们要把它伪装成原生的 Git 命令。

  1. 把脚本放到一个固定的文件夹,比如~/scripts/git_ai.py
  2. 打开你的 Shell 配置文件(.zshrc.bashrc),添加别名:
# 这里的 python 换成你具体的 python 路径aliasgcm='python ~/scripts/git_ai.py'
  1. 或者,在.gitconfig中配置别名:
[alias] ai = "!python ~/scripts/git_ai.py"

现在,你只需要在终端输入:

gitadd.gitai

奇迹发生了:屏幕上会自动吐出一句精准的总结,比如feat(user): 增加用户登录接口的验证码校验逻辑,你只需要敲个回车,提交完成。


🛡️ 为什么 CTO 会给你点赞?

这不仅仅是为了省事,更是一种**“向上管理”**的手段。

  1. 可读性飙升:当 CTO 或同事 review 你的代码时,清晰的feat/fix前缀让他们能一眼看懂你的意图,降低沟通成本。
  2. 便于自动化生成 Changelog:如果你的 Commit 很规范,可以使用工具(如 standard-version)一键生成版本更新日志。
  3. 显得专业:在别人还在写 “update” 的时候,你的提交记录井井有条,这种细节最能体现工程师素养。

📝 总结

AI 不一定会替代程序员,但会用 AI 的程序员一定能淘汰不会用的
把写 Commit Message 这种重复性、消耗脑力但又不得不做的事情交给 LLM,这才是 AI 赋能开发的正确姿势。

赶快动手试试吧,把你的 Git 仓库变成强迫症的“天堂”!


博主留言:
想要获取“适配 Ollama 本地模型的修改版脚本”或者“更复杂的 Prompt 模板(支持多行详细描述)”吗?
在评论区回复“GitAI”,我把完整代码包发给你!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 16:56:26

自监督学习落地中的故障排查:AI应用架构师的3个方法

自监督学习落地中的故障排查&#xff1a;AI应用架构师的3个方法 1. 标题 (Title) 自监督学习落地总“掉坑”&#xff1f;AI架构师亲授3招故障排查方法论从理论到生产&#xff1a;解决自监督学习落地难题的3个核心排查方法别让故障卡壳项目&#xff01;AI架构师必备&#xff1…

作者头像 李华
网站建设 2026/6/10 14:19:09

【Open-AutoGLM架构升级指南】:支撑全球20+国家低延迟推理的关键设计

第一章&#xff1a;Open-AutoGLM 全球化适配规划为支持 Open-AutoGLM 在多语言、多区域环境下的高效运行&#xff0c;全球化适配成为核心战略之一。系统需在架构设计层面实现语言、时区、字符编码和本地化规则的动态兼容&#xff0c;确保全球用户获得一致且符合本地习惯的交互体…

作者头像 李华
网站建设 2026/6/10 14:15:31

如何通过边缘计算降低Linly-Talker网络依赖?

如何通过边缘计算降低 Linly-Talker 网络依赖&#xff1f; 在智能客服、虚拟主播和数字员工逐渐走入现实的今天&#xff0c;一个看似流畅的对话背后&#xff0c;往往隐藏着对网络环境的极端依赖。你是否经历过这样的场景&#xff1a;用户刚说完问题&#xff0c;数字人却“卡”在…

作者头像 李华
网站建设 2026/6/9 22:34:09

Open-AutoGLM落地进展揭秘:为何这4个行业已实现90%以上推理效率提升?

第一章&#xff1a;Open-AutoGLM落地进展概述Open-AutoGLM 作为开源自动化生成语言模型系统&#xff0c;已在多个实际业务场景中完成初步部署与验证。其核心目标是通过模块化架构支持低延迟、高并发的自然语言处理任务&#xff0c;在金融、客服和内容生成领域展现出良好的适应性…

作者头像 李华
网站建设 2026/6/10 2:28:19

探索四目相机测量系统:Matlab 仿真与精度分析之旅

四目相机测量系统 matlab全套仿真程序与精度分析模块。 包括相机设置&#xff0c;参数定义&#xff0c;观测数据生成&#xff0c;全天星图生成&#xff0c;星点成像&#xff0c;星图识别&#xff0c;点阵目标匹配&#xff0c;仿真成像&#xff0c;畸变添加&#xff0c;噪声添加…

作者头像 李华
网站建设 2026/6/8 11:48:45

数字人物理交互设想:Linly-Talker与机械臂联动

数字人物理交互设想&#xff1a;Linly-Talker与机械臂联动 在一间智能展厅里&#xff0c;一位访客走近数字导览员&#xff0c;轻声问道&#xff1a;“你能介绍一下这个展品吗&#xff1f;”屏幕中的虚拟讲解员微微点头&#xff0c;嘴角上扬&#xff0c;随即开口回应。与此同时&…

作者头像 李华