G

Git提交信息自动生成

作者:鹿Sir开发工具v1

基于Git暂存区变更自动生成符合Conventional Commits规范的提交信息。支持中英文、多语言提交信息、scope识别和breaking change标注。当用户需要生成git commit message、提交代码、写提交信息时触发。

下载量
257
点赞
64
价格
免费

技能文档

---
name: git-commit-gen
description: 基于Git暂存区变更自动生成符合Conventional Commits规范的提交信息。支持中英文、多语言提交信息、scope识别和breaking change标注。当用户需要生成git commit message、提交代码、写提交信息时触发。
title: Git提交信息自动生成
category: 开发工具
---

# Git提交信息自动生成

基于 `git diff --staged` 的变更内容,自动生成符合 Conventional Commits 规范的高质量提交信息。

## 触发条件

当用户提到以下意图时激活:
- "生成提交信息"、"commit message"、"写提交信息"
- "帮我提交"、"生成commit"
- 用户执行了 `git add` 后需要提交信息

## 工作流程

### 第一步:获取变更信息

```bash
# 获取暂存区的变更摘要
git diff --staged --stat
# 获取详细变更
git diff --staged
# 获取当前分支名(用于推断scope)
git branch --show-current
```

### 第二步:变更分析

分析变更内容,识别以下要素:

1. **变更类型**:
   - `feat`:新功能
   - `fix`:修复Bug
   - `docs`:文档变更
   - `style`:代码格式(不影响逻辑)
   - `refactor`:重构(既非新功能也非修复)
   - `perf`:性能优化
   - `test`:测试相关
   - `build`:构建系统或外部依赖
   - `ci`:CI配置
   - `chore`:其他杂项

2. **影响范围(scope)**:
   - 从分支名推断(如 `feature/auth` → `auth`)
   - 从变更文件路径推断(如 `src/components/Button.tsx` → `Button`)
   - 从变更内容推断核心模块

3. **变更摘要**:
   - 用一句话概括做了什么(what)
   - 隐含说明为什么做(why)
   - 避免描述怎么做的(how)

4. **Breaking Change检测**:
   - API签名变更
   - 删除公共接口
   - 配置文件格式变更
   - 数据库Schema变更

### 第三步:生成提交信息

#### 格式规范

```
<type>(<scope>): <subject>

<body>

<footer>
```

#### 规则

**标题行(subject)**:
- 使用祈使语气(中文可直接描述)
- 首字母不大写(英文)/ 不以标点结尾
- 不超过72个字符(英文)/ 50个字符(中文)
- 简明扼要描述变更目的

**正文(body)**:
- 解释"为什么"而非"做了什么"
- 每行不超过72个字符
- 用空行与标题分隔

**脚注(footer)**:
- Breaking Change:`BREAKING CHANGE: <描述>`
- 关联Issue:`Closes #123, #456`

#### 示例

英文:
```
feat(auth): add OAuth2 login with Google provider

Implement Google OAuth2 authentication flow using the authorization
code grant type. This allows users to sign in with their Google
accounts, reducing friction in the registration process.

Closes #234
```

中文:
```
feat(认证): 新增Google OAuth2登录

实现Google OAuth2认证流程,使用授权码模式。
允许用户通过Google账号登录,降低注册门槛。

Closes #234
```

### 第四步:交互确认

向用户展示生成的提交信息,提供以下选项:
1. **直接使用** - 采用当前生成的信息
2. **修改标题** - 调整提交标题
3. **添加正文** - 补充更多说明
4. **重新生成** - 基于反馈重新生成

### 第五步:执行提交(可选)

如用户确认,执行:
```bash
git commit -m "<message>"
```

## 多文件变更处理

当暂存区包含多个文件的变更时:
1. 判断是否属于同一个逻辑变更
2. 如果是,生成一条综合的提交信息
3. 如果不属于同一逻辑变更,建议用户分批提交,并为每批生成独立的提交信息

## 特殊场景

### 重构提交
```
refactor(parser): 简化表达式解析逻辑,消除递归调用

将递归下降解析改为迭代方式,降低栈溢出风险,
同时提升大文件解析性能约40%。
```

### 性能优化
```
perf(query): 优化列表查询,添加分页和索引

原查询在数据量超过10万时响应时间超过5秒,
通过添加复合索引和分页查询,响应时间降至200ms以内。

Closes #567
```

### Breaking Change
```
feat(api)!: 将用户接口返回的ID类型从int改为string

为支持分布式ID生成方案,将所有用户ID字段类型
从int64改为string。调用方需同步更新类型处理逻辑。

BREAKING CHANGE: User.id 类型从 int64 变更为 string
```

## 语言策略

- 默认使用与项目代码注释相同的语言
- 如项目中英文注释为主,则生成英文提交信息
- 如项目中中文注释为主,则生成中文提交信息
- 用户可强制指定语言

## 注意事项

- 不要生成过于冗长的提交信息
- 不要在标题中罗列所有修改的文件
- 不要使用模糊的描述如"update code"、"修改了一些东西"
- 确保 type 准确反映变更性质
- Breaking Change 必须在标题行用 `!` 标注

如何安装此技能?

访问技能市场,点击「安装」按钮,按提示将技能包放入 AI 编程助手的 skills 目录即可。

浏览技能市场

支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手