Git 提交:用全栈技术打造智能 Commit Message 生成器

时间 :2026 年 3 月 10 日
标签:Node.js、Express、Vite、Tailwind CSS、Ollama、AI、Git 规范


引言:为什么我们需要"规范的 Git 提交信息"?

在现代软件开发中,Git 提交信息(Commit Message) 不仅是代码变更的记录,更是团队协作、项目追溯、自动化发布甚至绩效评估的重要依据。一个高质量的 Commit Message 能让:

  • 新人快速理解历史变更;
  • Leader 审核工作产出时有据可依;
  • CI/CD 流水线自动解析提交类型(feat、fix、docs 等);
  • 自动生成 CHANGELOG。

但现实是:很多开发者(尤其是新手)写出的提交信息如 update codefix bug,毫无信息量。于是,我萌生了一个想法:能否借助 AI,一键生成符合 Conventional Commits 规范的高质量提交信息?

于是,"Git 提交 AI 神器"项目诞生了!


项目架构:前后端分离 + 本地大模型

本项目采用典型的全栈架构,技术栈如下:

  • 前端:Vite + Vue/React(任选)+ Tailwind CSS + Axios

  • 后端:Node.js + Express

  • AI 引擎 :Ollama 部署的开源大模型 deepseek-r1:8b(支持推理能力)

  • 部署方式

    • 前端运行于 http://localhost:5173
    • 后端 API 伺服于 http://localhost:3000
    • Ollama API 暴露于 http://localhost:11434

整个系统通过 HTTP 请求链 串联:
前端 → 后端(Express) → Ollama(AI) → 返回智能 Commit Message


后端实现:Express 构建稳健 API

1. 初始化 Express 应用

ini 复制代码
const express = require('express');
const app = express();
const port = 3000;

// 解析 JSON 请求体(关键!否则 req.body 为 undefined)
app.use(express.json());

// 启用 CORS(解决跨域问题)
const cors = require('cors');
app.use(cors());

💡 注意 :Express 默认不解析请求体,必须手动添加 express.json() 中间件。否则 POST 请求的数据无法读取。

2. 设计核心 API 路由

我们提供一个 /generate-commit 接口,接收 diff 内容,返回 AI 生成的提交信息:

php 复制代码
app.post('/generate-commit', async (req, res) => {
  const { diff } = req.body;

  if (!diff) {
    return res.status(400).json({ error: 'Missing diff content' });
  }

  try {
    // 调用 Ollama API
    const aiResponse = await fetch('http://localhost:11434/api/generate', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        model: 'deepseek-r1:8b',
        prompt: `你是一个专业的 Git 提交信息生成器。请根据以下代码 diff 生成一条符合 Conventional Commits 规范的提交信息(英文):\n\n${diff}`,
        stream: false
      })
    });

    const result = await aiResponse.json();
    const commitMessage = result.response.trim();

    res.status(200).json({ commitMessage });
  } catch (err) {
    console.error(err);
    res.status(500).json({ error: 'AI service error' });
  }
});

3. 处理 HTTP 状态码

遵循 RESTful 规范,合理使用状态码:

  • 200 OK:成功生成
  • 400 Bad Request:缺少必要参数
  • 500 Internal Server Error:AI 服务异常

跨域问题:CORS 是"护照"

前端运行在 5173,后端在 3000端口不同即跨域。浏览器出于安全考虑会直接 block 请求。

解决方案:后端启用 CORS 中间件。

less 复制代码
app.use(cors()); // 允许所有来源(开发环境)
// 生产环境应指定 origin: ['https://yourdomain.com']

这相当于给前端"签发签证",浏览器放行请求。


前端实现:简洁 UI + 智能交互

使用 Vite 快速搭建前端,Tailwind CSS 实现美观界面:

ini 复制代码
<template>
  <div class="max-w-3xl mx-auto p-6">
    <h1 class="text-2xl font-bold mb-4">Git 提交 AI 神器 ✨</h1>
    <textarea 
      v-model="diff" 
      placeholder="粘贴你的 git diff 内容..." 
      class="w-full h-40 p-3 border rounded"
    ></textarea>
    <button 
      @click="generate" 
      :disabled="loading"
      class="mt-4 px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700"
    >
      {{ loading ? '生成中...' : 'AI 生成 Commit' }}
    </button>
    <div v-if="commitMessage" class="mt-4 p-3 bg-gray-100 rounded">
      <p class="font-mono">{{ commitMessage }}</p>
      <button @click="copy" class="mt-2 text-sm text-blue-600">复制</button>
    </div>
  </div>
</template>

<script setup>
import { ref } from 'vue';
import axios from 'axios';

const diff = ref('');
const commitMessage = ref('');
const loading = ref(false);

const generate = async () => {
  loading.value = true;
  try {
    const res = await axios.post('http://localhost:3000/generate-commit', {
      diff: diff.value
    });
    commitMessage.value = res.data.commitMessage;
  } catch (err) {
    alert('生成失败,请检查后端或 Ollama 是否运行');
  }
  loading.value = false;
};

const copy = () => {
  navigator.clipboard.writeText(commitMessage.value);
  alert('已复制到剪贴板!');
};
</script>

AI 集成:Ollama + DeepSeek-R1

Ollama 让本地运行大模型变得极其简单:

arduino 复制代码
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b  # 测试

其 API 与 OpenAI 兼容,只需 POST 到 /api/generate 即可获得推理结果。

为什么选 DeepSeek-R1?

它专为**推理(Reasoning)**优化,在代码理解、文本生成任务上表现优异,且 8B 参数可在消费级 GPU 上流畅运行。


开发体验优化

  • 使用 nodemon 监听文件变化,自动重启后端:

    vbscript 复制代码
    nodemon server.js
  • 使用 Apifox 测试 /generate-commit 接口,验证请求/响应结构。

  • 前端热更新(Vite)+ 后端热重载(Nodemon)= 极致开发效率。


总结:小工具,大价值

这个"Git 提交 AI 神器"虽小,却融合了:

  • 全栈开发(前端 + 后端)
  • HTTP 协议与 RESTful 设计
  • 跨域处理(CORS)
  • 本地大模型集成(Ollama)
  • 工程规范意识(Conventional Commits)

更重要的是,它降低了高质量 Git 提交的门槛,让每个开发者都能像资深工程师一样写出清晰、规范、有价值的提交信息。

未来可扩展方向:

  • 支持多语言 Commit(中文/英文切换)
  • 集成 VS Code 插件
  • 自动检测 diff 并建议提交类型

代码即文档,提交即履历。

用 AI 赋能开发习惯,从写好每一次 git commit 开始!

相关推荐
明月_清风3 小时前
拒绝盲目 Git:VS Code 神级插件 GitLens 的 9 个进效杀手锏
前端·git
带你看月亮2 天前
为什么优秀程序员总在拆函数?因为代码应该表达意图,而不是实现
全栈
比尔盖茨的大脑2 天前
AI Agent 架构设计:从 ReAct 到 Multi-Agent 系统
前端·人工智能·全栈
goodspeed3 天前
Git Worktree:多分支并行开发的利器
git·github
雮尘4 天前
让 AI Agent 高效并行开发的命令-git worktree
人工智能·git·agent
会员源码网4 天前
递归的陷阱与救赎:深入理解栈溢出及其解决方案
全栈
南果梨5 天前
OpenClaw 完整教程!从安装到使用(官方脚本版)
前端·git·开源
Maori3165 天前
放弃 SDKMAN 和 NVM!在 Garuda Linux + Fish 环境下用 mise 统管全栈开发环境
全栈
HOHO5 天前
两周时间带着三个实习生开发了一个八万行代码的项目?聊聊我的感想
aigc·全栈