# gitCommitMessage **Repository Path**: inforw/git-commit-message ## Basic Information - **Project Name**: gitCommitMessage - **Description**: git提交仓库 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-01 - **Last Updated**: 2026-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git Commit AI 直接在根目录 Spring Boot Maven 工程中开发,不需要独立 Gradle 工程。 ## 代码位置 - `src/main/java/com/gjh/gitcomitmessage/util/AiHttpClient.java`:封装模型 HTTP 请求,支持 Chat Completions 和 Responses。 - `src/main/java/com/gjh/gitcomitmessage/util/GitDiffCollector.java`:收集 Git 差异,支持全部已跟踪改动、仅暂存区,以及可选的未跟踪文本文件。 - `src/main/java/com/gjh/gitcomitmessage/util/CommitMessage.java`:校验 Conventional Commits 格式。 - `src/main/java/com/gjh/gitcomitmessage/exception/BusinessException.java`:业务异常。 - `src/main/java/com/gjh/gitcomitmessage/plugin/`:IDEA 配置、PasswordSafe 密钥存储、菜单和结果窗口。 - `src/main/resources/META-INF/plugin.xml`:插件注册文件。 ## Maven 构建 使用 JDK 21 或更高版本,先将 `JAVA_HOME` 指向对应 JDK。 普通 Spring Boot 构建不编译依赖 IDEA 的 `plugin` 包: ```powershell ./mvnw.cmd clean verify ``` 构建 IDEA 插件时,在同一个根目录启用 Maven profile,传入本机 IDEA 安装路径: ```powershell ./mvnw.cmd clean verify -Pidea-plugin '-Didea.home=D:/JetBrains/IntelliJ IDEA' ``` 该 profile 使用本机 IntelliJ IDEA 2026.1 SDK 的 JAR,仅用于编译,不会把 SDK 打进插件。IDEA 路径在其他电脑上需要替换;SDK 文件结构按 2026.1 配置。插件最低支持版本设置为 IDEA 2026.1。 `idea-plugin` profile 已设置本机 SDK 默认路径 `D:/JetBrains/IntelliJ IDEA`。在 IDEA 的 Maven 面板展开 Profiles,勾选 `idea-plugin`,再点击 Reload All Maven Projects,IDEA 导入时也会读取该路径;终端仍可通过 `-Didea.home=...` 覆盖。若提示 `Cannot resolve file`,请确认路径下存在对应 JAR,并检查实际安装的 IDEA 版本。阿里云仓库和代理不会提供这些 `system` 作用域的本地 SDK 文件。 插件产物为 `target/gitComitMessage-0.0.1-SNAPSHOT-idea-plugin.jar`,可在 IDEA 的 **Settings > Plugins > 齿轮 > Install Plugin from Disk** 选择安装。插件 JAR 仅包含插件、工具和异常类及注册文件;它不是 Spring Boot 可执行 JAR。 切换普通构建与插件构建时使用 `clean`,避免上次构建留下的 IDEA 类混入普通构建。 ## IDEA 使用 1. 打开 **Settings > Tools > Git Commit AI**。 2. Base URL 填 `https://api.ikuncode.ai/v1`。 3. 模型填 `deepseek-v4-flash`,API 协议选 `chat/completions`,填写自己的 API Key。 4. 密钥保存在 IDEA PasswordSafe;输入框留空时,使用配置的环境变量,默认 `CCH_API_KEY`。也可以把环境变量名称改为 `NEW_API_KEY`;设置环境变量后需重新启动 IDEA。 5. 根据提交范围选择“仅分析暂存区”。未跟踪文件默认不发送,需要单独勾选。 6. 在已配置 Git 的项目中执行 **Tools > Generate AI Commit Message**,多个仓库会先要求选择仓库。 7. 检查生成结果,可编辑后复制到 Git 提交框。插件不会自动暂存或提交。 生成操作会先保存编辑器中的文档,再把选定仓库和范围的 Git 差异发送到配置的模型服务。范围按整个仓库计算,不读取 Commit 窗口勾选的文件列表。请检查差异中的敏感信息。 Chat Completions 只读取 `choices[0].message.content`,不会把 `reasoning_content` 当作提交信息。Responses 读取 `output` 中的 `output_text`。 首行格式为 `type(scope): 描述`,scope 可省略,最长 72 个字符;支持 `feat`、`fix`、`docs`、`style`、`refactor`、`perf`、`test`、`build`、`ci`、`chore`、`revert`。正文与首行空一行。不符合格式的输出会报错,不会直接复制。 Git 差异超过 60000 字符会报错,需分批暂存。未跟踪的二进制文件和非 UTF-8 文件只发送跳过说明;Git 已跟踪的二进制文件按 Git 的差异摘要处理。存在未解决的合并冲突时停止生成。 ## 验证范围 `CoreTests` 是 Maven/JUnit 测试,使用本地模拟 HTTP 服务和临时 Git 仓库,覆盖协议、中文请求、响应解析、异常、取消、提交格式、暂存区/工作区、未跟踪文件和大小限制。不需要真实 API Key,也不会请求实际模型服务。Spring Boot 原有启动测试保留。 ## 1.0.1 安装与 Commit 工具栏 必须选择 `target/gitComitMessage-0.0.1-SNAPSHOT-idea-plugin.jar` 安装。普通 Spring Boot JAR 不再包含插件注册文件,不能作为 IDEA 插件安装。若已安装旧包,请先在 Plugins 中卸载 Git Commit AI,再通过 Install Plugin from Disk 安装带 `-idea-plugin` 后缀的新包,按提示重启 IDEA。 Commit 提交信息工具栏新增 Generate AI Commit Message 和 Git Commit AI Settings 两个按钮,分别用于生成提交信息和配置 URL、模型及 API Key。Tools 菜单仍保留两个入口,设置页面也可从 Settings > Tools > Git Commit AI 打开。 从 Commit 工具栏生成后,可在结果窗口检查并编辑,点击“填入提交框并关闭”更新提交信息;从 Tools 菜单生成则仍可复制。生成范围仍由设置中的暂存区及未跟踪文件选项决定,不按 Commit 列表中勾选的文件筛选。