🤖 用 AI 写 Git Commit Message?我让新手秒变 Git 高手!

"你的 commit message 又写成 fix bug 了?"

"别骂了,我这就去改......"

如果你也曾因提交信息太随意被 Leader 点名批评,或者看着别人优雅的 Git 日志自叹不如------那么恭喜你,今天这篇文章就是为你量身打造的「Git 提交信息拯救计划」!

我们将一起搭建一个 全栈 AI Git Commit Message 生成器 ,让你每次 git commit 都像 Linus 本人在敲键盘 ✨。


🧠 为什么 Git 提交信息这么重要?

很多人觉得:"代码能跑就行,commit message 随便写写呗。"

但现实很骨感:

  • 项目日志混乱 :三个月后回看 update file,你根本不知道改了啥。
  • Code Review 困难:Reviewer 看不懂你意图,只能反复问"这是干啥的?"
  • 绩效考核吃亏 :Leader 翻 Git 历史时,看到一串 fix, add, ok,心里默默给你打了个 ❌。
  • 团队协作灾难:新人接手项目,光看 commit log 就想辞职。

规范的 commit message = 专业开发者的第一张名片 💼

而今天,我们要做的,就是让 AI 来帮你写规范、清晰、符合 Conventional Commits 的提交信息


🛠️ 技术栈:全栈 + AI,三端联动

我们的小神器由三部分组成,堪称"三位一体":

模块 技术 职责
前端 React + Tailwind CSS + Axios 用户界面,展示 AI 生成的 commit message
后端 Node.js + Express 接收请求,调用 AI 模型
AI 引擎 Ollama + DeepSeek-R1:8B(本地 GPU 运行) 真正的"大脑",理解代码差异并生成高质量 commit

无需联网!无需 OpenAI API!全部跑在你自己的电脑上,隐私安全拉满 🔒


🌐 架构图:数据如何流动?

scss 复制代码
[前端浏览器] 
    ↓ (POST /chat)
[Express 后端 @3000]
    ↓ (调用 Ollama API)
[Ollama AI @11434 → DeepSeek-R1:8B]
    ↑ (返回 commit message)
[Express 返回 JSON]
    ↑
[前端展示结果]

整个过程不到 5 秒,AI 就能根据你的 git diff 输出一条像模像样的 commit:

✅ feat(auth): implement JWT token refresh logic

✅ fix(ui): resolve button overflow on mobile view

✅ docs(readme): update installation instructions

是不是瞬间高大上了?


🧪 后端:Express 的优雅之道

我们用 Express 搭建了一个极简但健壮的 API 服务:

javascript 复制代码
app.post('/chat', async (req, res) => {
  const { message } = req.body;
  if (!message || typeof message !== 'string') {
    return res.status(400).json({ error: "message 必填,必须是字符串" });
  }

  try {
    const prompt = ChatPromptTemplate.fromMessages([
      ['system', '你是一个专业的 Git 提交信息助手,请根据以下代码变更生成符合 Conventional Commits 规范的提交信息。'],
      ['human', '{input}']
    ]);

    const chain = prompt.pipe(model).pipe(new StringOutputParser());
    const result = await chain.invoke({ input: message });

    res.json({ reply: result });
  } catch (e) {
    console.error(e);
    res.status(500).json({ error: "调用大模型失败" });
  }
});

关键点:

  • 输入校验:防止前端乱传数据
  • 错误处理:500 错误不崩服
  • 提示词工程:明确告诉 AI "你要干啥"
  • LangChain 链式调用:模块化、可扩展

Express 虽老,但稳如老狗。配合 cors()express.json() 中间件,跨域和 JSON 解析一键搞定。


🎨 前端:React Hook 封装副作用

我们用自定义 Hook useGitDiff 把 AI 调用逻辑抽离出来:

scss 复制代码
export const useGitDiff = () => {
  const [content, setContent] = useState('');
  const [loading, setLoading] = useState(false);

  useEffect(() => {
    (async () => {
      setLoading(true);
      const { data } = await chat('请根据以下 git diff 生成 commit message...');
      setContent(data.reply);
      setLoading(false);
    })();
  }, []);

  return { loading, content };
};

组件只需关注 UI:

javascript 复制代码
export default function App() {
  const { loading, content } = useGitDiff();
  return (
    <div className="flex min-h-screen items-center justify-center bg-gray-50">
      {loading ? (
        <p className="text-lg">🧠 AI 正在思考中...</p>
      ) : (
        <pre className="bg-white p-4 rounded shadow-md max-w-2xl">{content}</pre>
      )}
    </div>
  );
}

Tailwind 让样式开发快如闪电,Axios 封装统一 API 调用,清爽又高效!


🤯 跨域?不存在的!

前端跑在 http://localhost:5173,后端在 http://localhost:3000 ------ 端口不同,浏览器直接 block 请求。

解决方案?一行代码:

ini 复制代码
app.use(cors());

CORS 就像给前端办了"外交护照",浏览器一看:"哦,后端特批了,放行!" 🛂


🧪 如何测试?Apifox 来助阵!

开发时用 ApifoxPostman 直接 POST 到 /chat

less 复制代码
{
  "message": "diff --git a/src/App.js b/src/App.js\n+ console.log('hello AI');"
}

秒回:

json 复制代码
{ "reply": "feat(app): add debug log in App component" }

调试效率翻倍!


🚀 未来展望:不止于 Commit Message

这个小项目其实是个"AI 开发助手"的雏形。下一步我们可以:

  • 自动读取本地 git diff(通过 Electron 或 CLI 工具)
  • 支持多语言模型切换(Qwen、Llama3、DeepSeek)
  • 集成到 VS Code 插件,一键生成 commit
  • 甚至自动 git commit -m "$(ai-commit)"

💡 结语:让 AI 成为你的编程副驾驶

我们不是要取代开发者,而是把重复、枯燥、容易出错的工作交给 AI,让我们专注在真正有创造力的部分。

一个好的 commit message,不仅是对代码的尊重,更是对团队、对未来的自己负责。

现在,你只需要复制粘贴 AI 生成的内容,就能写出让人眼前一亮的 Git 提交记录------
从此,你的 Git 历史,也能登上"最佳实践"榜单!

相关推荐
杨杨杨大侠6 小时前
大模型的温度到底是什么?从 token 采样讲到量化
aigc·openai·ai编程
杨杨杨大侠9 小时前
从零训练一个 321 万参数的小模型:用 MLX 看懂 Transformer 的训练过程
aigc·openai·ai编程
airank9 小时前
2026年GEO服务商选型指南:系统梳理服务商分类框架、主流服务商能力横评、企业级选型六大维度及避坑要点,帮助企业在AI搜索时代做出科学决策。
大数据·人工智能·数据分析·aigc
飞哥数智坊10 小时前
我对 AI 生图的一点工程化理解
人工智能·aigc
JavaPub-rodert11 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
“AI国潮设计-小江”12 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
手写码匠13 小时前
华为云Flexus+DeepSeek征文|DeepSeek 应用监控告警体系实战:从“用户投诉才知道“到“故障前就发现“
人工智能·深度学习·算法·aigc
ServBay14 小时前
谷歌发布 Gemini 3.8 Flash,官方跑分很厉害,但又被嘲了?
aigc·ai编程·gemini
后端小肥肠14 小时前
还在找PPT 生成工具?我集成了 GitHub 高星 Skill,自动匹配最优方案
人工智能·aigc·agent
Cosolar14 小时前
从 ChatGPT 到 Astra:四年走完的路,AGI 真的来了吗?
人工智能·aigc·openai