# smart-commit **Repository Path**: rainyeah/smart-commit ## Basic Information - **Project Name**: smart-commit - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-08 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Smart Commit Helper 这是一个基于 Python 的命令行工具,用于在 Git 仓库中根据代码修改内容生成提交信息,并完成提交。自动提交工具。 ## 功能特点 - 检测当前目录是否为 Git 仓库 - 读取 git diff 内容 - 生成符合 Conventional Commits 规范的提交信息 - 提供确认、取消、手动修改提交信息的交互 - 自动执行 git add . 和 git commit - 对无修改、无网络、无密钥、非 Git 目录等情况给出友好提示 ## 环境要求 - Python 3.9+ - Git ## 安装依赖 ```bash pip install python-dotenv ``` ## 配置 在项目根目录创建 .env 文件,并写入你的 API 配置: ```env OPENAI_API_KEY=your_api_key_here OPENAI_API_BASE=https://api.openai.com/v1/chat/completions MODEL_NAME=gpt-4o-mini ``` 如果你使用的是兼容 OpenAI 接口的第三方服务,也可以直接修改 OPENAI_API_BASE。 ## 使用方法 ```bash python smart_commit_helper.py ``` 然后根据提示输入: - Y:确认提交 - N:取消提交 - E:手动修改提交信息 ## 说明 当前版本已经内置一个轻量兜底逻辑,确保在没有网络或没有真实模型调用时也能正常工作;如果你后续想接入真正的大模型接口,可以在 [smart_commit_helper.py](smart_commit_helper.py) 中替换生成逻辑。 ## 强制提交信息检查(commitlint + husky) 项目已添加 `commitlint` 与 `husky` 的基础配置,用于在本地提交时校验提交信息是否符合 Conventional Commits 规范。 新增文件: - [package.json](package.json) - [commitlint.config.cjs](commitlint.config.cjs) - [.husky/commit-msg](.husky/commit-msg) 激活并使用(在项目根目录运行): ```bash npm install npm run prepare # 之后每次提交时会自动校验提交信息 ``` 如果你没有全局安装 `npm` 或者只想临时启用,可以使用 `npx husky install` 来安装 hook: ```bash npx husky install ``` 如需调整规则,请编辑 [commitlint.config.cjs](commitlint.config.cjs)。 ### 自定义 commitlint 规则 你可以在 `commitlint.config.cjs` 中添加或修改 `rules`,例如: ```js module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [2, 'always', [ 'feat', 'fix', 'docs', 'style', 'refactor', 'perf', 'test', 'chore', 'build', 'ci' ]], 'scope-enum': [2, 'always', ['core', 'ui', 'api', 'deps', 'tests', 'docs']], 'subject-case': [2, 'never', ['sentence-case', 'start-case', 'pascal-case', 'upper-case']], 'subject-max-length': [2, 'always', 72] } }; ``` 常用规则: - `type-enum`: 限制提交类型 - `scope-enum`: 限制作用域 - `subject-case`: 提交标题大小写规则 - `subject-min-length` / `subject-max-length`: 标题长度 - `header-max-length`: 全部提交头长度 如果你只想禁用某个规则,可以把它设置为 `[0, 'always']`。