# cool-git-commit **Repository Path**: cool_studio/cool-git-commit ## Basic Information - **Project Name**: cool-git-commit - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-10 - **Last Updated**: 2026-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git Commit Assistant Git Commit Assistant 是一个面向 JetBrains 系列 IDE 的 Git 提交信息插件。它可以通过结构化表单编辑 Conventional Commit,也可以根据 Commit 工具窗口中实际勾选的变更,调用配置的 LLM Provider 生成提交信息。 插件发布名为 `Git Commit Assistant`,IDE 内操作和设置页使用中文名称“Git提交助手”。 ## 功能 - 使用结构化表单创建或编辑提交信息,支持可选 Emoji 和实时预览。 - 反向解析已有的 Conventional Commit;无法识别的旧提交信息会原样保留在正文中。 - 仅基于 Commit 工具窗口中已勾选的变更生成提交信息。 - 支持 OpenAI Compatible、OpenAI Responses 和 Anthropic Native 三种协议。 - 支持配置多个 Provider,并设置全局默认或项目级 Provider。 - 支持多套全局提示词模板,以及优先级更高的项目独有提示词。 - 支持 `BREAKING CHANGE`、关闭 Issue 和 `[skip ci]` / `[ci skip]`。 - API Key 与 Provider 配置一起存入后端 IDE 的应用级设置,以兼容 JetBrains 远程开发;设置 XML 中为明文,请确保远程主机账户和配置目录权限可信。 ## 兼容性 - JetBrains IDE:2024.2 及以上版本(`sinceBuild = 242`) - 开发环境:JDK 21 - 构建基线:IntelliJ IDEA Community 2024.2 项目的 Plugin Verifier 配置覆盖 IntelliJ IDEA、WebStorm、PyCharm 和 GoLand 2024.2,以及 IntelliJ IDEA 2025.2.6.3。 ## 安装 当前仓库可从源码构建插件安装包: ```bash git clone https://gitee.com/cool_studio/cool-git-commit.git cd cool-git-commit ./gradlew clean buildPlugin ``` 构建产物位于 `build/distributions/`。在 IDE 中打开: 1. `Settings/Preferences | Plugins` 2. 点击齿轮按钮,选择 `Install Plugin from Disk...` 3. 选择 `build/distributions/` 下生成的 ZIP 文件 4. 按 IDE 提示重启 不要直接安装 `build/libs/` 下的 JAR 文件;它不包含第三方运行时依赖,只用于构建 ZIP 安装包。 ## 配置 Provider 打开 `Settings/Preferences | Tools | Git提交助手`,添加至少一个 Provider。 | 配置项 | 说明 | | --- | --- | | 名称 | Provider 在插件菜单中的显示名称,同一配置中不能重复 | | 协议 | `OpenAI Compatible`、`OpenAI Responses` 或 `Anthropic Native` | | Base URL | 不含用户信息、查询参数和片段的 HTTP/HTTPS 地址 | | 模型 | Provider 支持的模型名称 | | 温度 | `0.0` 到 `2.0`,默认 `0.2` | | 超时 | `5` 到 `600` 秒,默认 `60` 秒 | | API Key | Provider 的访问密钥;OpenAI Responses 和 Anthropic Native 必填 | 配置完成后,在“全局默认 Provider”中选择默认项。项目也可以在 `Settings/Preferences | Tools | Git提交助手(项目)` 中覆盖该选择。 “测试 API”使用弹窗中的当前配置;测试成功后仍需点击设置窗口的“应用”或“确定”,API Key 才会随 Provider 配置写入后端 IDE 的应用级设置。OpenAI Compatible 协议允许 API Key 留空,以支持不需要鉴权的本地服务;使用需要鉴权的远程服务时仍须填写有效密钥。 ## 使用 ### 结构化编辑 1. 打开 IDE 的 Commit 工具窗口。 2. 在提交信息输入区选择“结构化编辑提交信息”。 3. 选择 `emoji` 并填写 `type`、`scope`、`subject`、`body` 及可选 Footer。 4. 在预览区确认最终内容后提交表单。 内置类型包括: ```text feat fix docs style refactor perf test build ci chore revert ``` 类型下拉框也允许输入符合标识符规则的自定义值。最终提交信息示例: ```text ✨feat(settings)!: support project prompt profiles Allow each project to override the selected global prompt. BREAKING CHANGE: migrate the legacy prompt setting Closes #42 ``` Emoji 为可选字段且默认关闭,默认提交格式为 `(): `。启用后,选择内置类型时结构化编辑器会带入该类型的默认 Emoji;现有不带 Emoji 的 Conventional Commit 仍会原样反向解析。可在 `Settings/Preferences | Tools | Git提交助手(格式与 Emoji)` 中修改每个内置类型的默认值,留空表示该类型默认不使用 Emoji。 同一设置页支持通过 ``、``、``、``、`` 自定义首行格式。`` 可以省略,插件仍会在冒号前保留破坏性变更标记。例如: ```text (): (): (): ``` ### AI 生成 1. 在 Commit 工具窗口勾选本次需要提交的变更。 2. 通过“选择 LLM Provider”确认当前项目使用的 Provider。 3. 选择“AI 生成提交信息”。 4. 等待生成完成,并在提交前检查结果。 生成任务支持取消。请求期间如果你手动修改了提交信息,插件不会用稍后返回的 AI 结果覆盖当前内容。 AI 返回的纯文本会直接写入提交信息框,输出格式完全由当前生效的提示词决定。“格式与 Emoji”设置只用于结构化创建、编辑和反向解析,不会向 AI 提示词追加格式要求。 ## 自定义提示词 ### 全局模板 在 `Settings/Preferences | Tools | Git提交助手(提示词)` 中可以: - 通过表格查看、新增、编辑和删除多套提示词模板; - 通过独立的“默认提示词”选择框指定全局默认模板; - 配置 `{locale}` 对应的输出语言,留空时跟随 IDE; - 查看和编辑模板内容。 插件内置以下提示词,可直接选择,也可以在此基础上编辑: | 提示词 | 用途 | | --- | --- | | 简洁提交 | 生成简短的 Conventional Commit,作为默认模板 | | 详细提交 | 生成包含正文和可选页脚的提交信息 | | 完整提交 | 结合分支、文件、统计和最近提交记录生成完整说明 | | Gitmoji 提交 | 按 Gitmoji 与 type 映射生成带 Emoji 的提交信息 | | emoji详细提交 | 生成带 Emoji、单行详细说明和可选页脚的提交信息 | | Conventional Commit | 生成不带 Emoji 的标准 Conventional Commit | 首次运行插件或升级到包含新预置的版本时,该版本新增的内置模板会一次性补充到现有列表中;已有默认模板和自定义内容保持不变,补充后手动删除的内置模板不会再次自动恢复。 `{locale}` 不要求必须写入模板。模板包含该变量时会在原位置替换;模板未包含时,插件会把输出语言追加到最终 Prompt。这样既支持统一配置输出语言,也兼容明确写死语言要求的自定义模板。 ### 项目设置 在 `Settings/Preferences | Tools | Git提交助手(项目)` 中可以: - 选择项目使用的 Provider; - 选择项目使用的全局提示词模板; - 填写仅对当前项目生效的独有提示词; - 查看当前生效的提示词来源、模板原文,以及使用示例提交上下文完成变量替换后的最终 Prompt。 提示词的生效优先级为: 1. 非空的项目独有提示词 2. 项目选择的全局提示词模板 3. 全局默认提示词模板 可用变量如下: | 变量 | 内容 | | --- | --- | | `{diff}` | 已勾选并通过过滤的文本 diff | | `{branch}` | 相关 Git 仓库的当前分支 | | `{files}` | 变更类型和文件路径列表 | | `{stats}` | 文件数及增删行统计 | | `{locale}` | 全局提示词设置中配置的输出语言;留空时使用 IDE 运行环境的语言标签 | | `{previousCommitMessages}` | 相关仓库最近的提交主题,最多 10 条;仅作为低优先级的项目语境参考,不应影响模板规定的输出格式或作为本次变更事实 | | `{repositories}` | 本次勾选变更涉及的 Git 仓库名称 | | `{currentRevision}` | 相关仓库当前 HEAD 的提交哈希;尚无提交时为 `unborn HEAD` | | `{changeList}` | 本次变更所属的变更列表名称 | | `{projectName}` | 当前打开的项目名称 | | `{reductionMode}` | 上下文缩减状态:`FULL`、`COMPRESSED` 或 `SUMMARY` | 模板没有显式引用的上下文变量仍会由插件附加到最终 Prompt;模板已经引用的变量只在原位置替换,不会重复追加。被排除文件由插件根据文件过滤设置自动附加,无需配置提示词变量。插件不会额外追加模型输出格式约束。 项目设置页的最终 Prompt 使用固定示例上下文,仅用于预览模板替换与上下文补充结果;实际 AI 生成时会换成 Commit 窗口中当前勾选变更的真实上下文。 关闭 Emoji 后,“格式与 Emoji”页会从提交格式和占位符说明中移除 ``;同一次设置会话重新启用时恢复原来的字段位置。 ### 文件过滤 在 `Settings/Preferences | Tools | Git提交助手 | 文件过滤` 中可以: - 启用或关闭自定义文件过滤;敏感文件保护始终生效,不能关闭; - 使用 `*`、`?` 和 `**` 编写项目相对路径规则,一行一条; - 恢复默认的构建目录过滤规则; - 输入示例路径测试当前规则是否匹配。 过滤只影响发送给 AI 的上下文,不改变 Commit 面板的勾选状态或实际 Git 提交内容。 ## 数据与隐私 AI 生成功能会把以下内容发送到你配置的 Provider: - 已勾选文件中通过过滤的文本 diff; - 项目名、仓库名、分支、HEAD、变更列表、文件列表和增删行统计; - 相关仓库最近的提交主题; - 当前生效的提示词模板和语言标签。 插件不会发送二进制 diff,并始终排除以下敏感文件: - `.env`、`.env.*`、`id_rsa`、`id_ed25519`、`credentials.json`、`secrets.json`; - `.pem`、`.key`、`.p12`、`.pfx`、`.jks`、`.keystore` 文件; 默认自定义规则排除 `node_modules`、`build`、`dist`、`target`、`out`、`.gradle` 目录;这些规则可以在“文件过滤”设置页修改或关闭。 过滤规则不能覆盖所有项目约定。调用远程模型前,仍应检查已勾选的文件和 Provider 的数据处理政策。 为限制上下文大小,插件最多处理 100 个文件;单文件 diff 最多保留 30,000 个字符,总 diff 最多保留 120,000 个字符。被过滤或因限制未包含的文件会在生成完成通知中提示。 ## 本地开发 运行插件沙箱 IDE: ```bash ./gradlew runIde ``` 运行单元测试: ```bash ./gradlew test ``` 执行完整检查并构建插件: ```bash ./gradlew clean check buildPlugin ``` 运行 JetBrains Plugin Verifier: ```bash ./gradlew verifyPlugin ``` ## 许可证 本项目基于 [Apache License 2.0](LICENSE) 开源。