使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
提交 Writer
功能概述
提交 Writer是一项面向实际任务的技能,主要用于生成与语义化版本、 变换lo 工作相关的机器可读信件。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 执行完成后建议检查结果是否符合预期,并保留必要记录。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
提交信息生成器(Commit Writer)
依据 Conventional Commits 规范,自动生成清晰、标准化的 Git 提交信息。所生成的信息具备机器可读性,兼容语义化版本控制(semantic versioning)、变更日志(changelog)生成工具及 CI 流水线。
快速参考
| 场景 | 命令 / 操作 |
|---|---|
| 需基于暂存区(staged)变更生成提交信息 | 运行 git diff --cached --stat + git diff --cached |
| 需基于全部变更(包括未暂存)生成提交信息 | 运行 git diff --stat + git diff |
| 需要近期提交历史作为上下文 | 运行 git log --oneline -5 |
| 修正上一次提交(amend) | 使用 git commit --amend(须先向用户确认) |
Conventional Commits 格式
( ):
Type 参考表
| Type | 适用场景 | 示例 |
|---|---|---|
feat |
新增功能 | feat(auth): add OAuth2 login flow |
fix |
修复缺陷(bug) | fix(parser): handle empty input edge case |
docs |
仅涉及文档修改 | docs: fix typo in README |
style |
代码格式调整(如缩进、分号、空格等),不改变生产代码逻辑 | style: format with prettier |
refactor |
代码重构(不新增功能,也不修复缺陷) | refactor(api): extract validation middleware |
perf |
性能优化 | perf(db): add index on user email column |
test |
新增或修复测试 | test(api): add endpoint integration tests |
build |
构建系统或依赖项变更 | build: bump lodash to 4.17.21 |
ci |
CI/CD 配置变更 | ci: add GitHub Actions release workflow |
chore |
日常维护、工具配置、脚本更新等 | chore: configure ESLint |
revert |
回退(revert)某次先前的提交 | revert: feat(auth): add OAuth2 login flow |
Subject 规则
- 长度上限为 50 字符(硬性限制:72 字符)
- 结尾不加句号(.)
- 使用祈使语气(imperative mood),例如用 “add” 而非 “added” 或 “adds”
- type/scope 后的内容首字母小写(不使用大驼峰或句首大写)
Scope(作用域)
为可选字段,但当变更影响范围较明确时强烈建议填写:
- 功能名称:
feat(auth)、fix(checkout) - 模块名称:
refactor(database)、perf(api) - 区域标识:
docs(readme)、test(e2e)
破坏性变更(Breaking Changes)
在 type/scope 后添加 !,或在 footer 中显式声明 BREAKING CHANGE:
feat(api)!: remove deprecated v1 endpoints Migrate to v2 endpoints. See migration guide. BREAKING CHANGE: v1 API endpoints removed. Use /api/v2/* instead.
Body(正文)
当仅靠 subject 不足以说明变更意图时使用:
- 为何进行此项变更(而非“做了什么”——该信息已由 subject 表达)
- 与先前行为相比有何不同
- 若存在多个动因,使用无序列表(以
-开头)分条列出
feat(cart): add quantity validation - Prevent checkout with zero-quantity items - Show inline error per line item
Footer(页脚)
用于问题追踪(issue tracking)和破坏性变更说明:
BREAKING CHANGE:— 破坏性变更通知Closes #123、Fixes #456— 关联 issue 并自动关闭Refs #789— 引用相关 issue(不自动关闭)Co-authored-by: Name— 标注协作者
分析流程
基于 diff 生成提交信息时,按以下步骤执行:
- 优先阅读 diff 统计(diff stat):明确哪些文件被修改
- 对变更类型进行归类:判断属于 feat、fix、refactor 等哪一类
- 识别作用域(scope):确定影响的模块或功能区域
- 撰写 subject:简洁、祈使式、不超过 50 字符
- 按需补充 body:对非显而易见的变更,说明其动机
- 按需添加 footer:如含破坏性变更或需关联 issue
多个变更的聚合处理
当一个 diff 包含多个不相关的变更时:
- 若变更彼此独立,则拆分为多个提交
- 若变更主题相关,则采用主导 type
- 优先选用更精细的作用域(narrower scope),避免将所有内容强行塞入单条提交信息
示例
简单功能新增
feat(api): add pagination support to listings
带上下文的缺陷修复
fix(parser): handle malformed JSON gracefully The parser crashed when receiving truncated JSON from upstream. Return a partial result with error metadata instead.
含破坏性变更的重构
refactor(db)!: merge users and profiles tables BREAKING CHANGE: The `profiles` table is removed. Profile data is now in the `users` table under the `profile` JSONB column.
多文件维护任务
chore: configure ESLint and Prettier - Add .eslintrc.json with TypeScript rules - Add .prettierrc with project formatting settings - Add lint-staged for pre-commit checks
测试新增
test(e2e): add checkout flow tests - Add test for complete purchase flow - Add test for coupon application - Add test for payment failure recovery
边界情况(Edge Cases)
合并提交(Merge Commits)
保留默认合并消息格式(如 Merge branch '...' )。除非用户明确要求,否则不得重写合并提交信息。
回退提交(Reverts)
统一使用 revert: 类型,并在 subject 中包含原始提交的哈希值:
revert: feat(auth): add OAuth2 login flow This reverts commit a1b2c3d4e5f6...
进行中 / 临时提交(WIP / Temporary Commits)
仅当用户明确要求生成进行中(WIP)提交时,才使用 WIP: 前缀;否则默认采用 chore: wip 并附简短描述。
压缩提交(Squash Commits)
压缩多个提交时,选用其中最显著的 type。若压缩内容同时含 feat 和 fix,默认取 feat。
空变更 / 纯配置变更
chore: update .gitignore chore: configure tsconfig.json paths chore: add editorconfig docs: update issue templates
工作流(Workflow)
当用户发出 “write a commit message” 指令时,执行以下流程:
- 运行
git status检查当前仓库状态 - 运行
git diff --cached --stat查看暂存区变更统计 - 运行
git diff --cached查看暂存区完整 diff - (可选)运行
git log --oneline -5获取最近 5 条提交上下文 - 按上述 Conventional Commits 格式提出提交信息草案
- 提交前须向用户确认
热门AI工具
相关专题
在JavaScript中实现Base64编码,最直接的方式是使用内置的btoa()函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
379
2025.10.24
在 html 中调用外部 js 可通过以下步骤:创建 js 文件并编写代码。在 html 代码中添加 <script> 标签,设置 src 属性为 js 文件路径。保存并刷新页面加载外部 js。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
1712
2024.04.11
php和js的区别:PHP主要用于服务器端编程,而JavaScript主要用于客户端编程;PHP代码在服务器端执行,而JavaScript代码在客户端浏览器中执行。想了解更多php和js的相关内容,可以阅读本专题下面的文章。
4828
2024.03.22
在JavaScript中,document对象是一个非常重要的全局对象,它代表整个HTML文档。想了解更多Document的相关内容,可以阅读本专题下面的文章。
6047
2024.03.14
在JavaScript中,并没有一个内建的each函数,但jQuery库提供了一个非常有用的$.each() 函数,用于遍历数组或对象。想了解更多each函数的相关内容,可以阅读本专题下面的文章。
1629
2024.03.13
js和vue的关系:1、js作为web开发基石;2、vue.js作为前端框架的崛起;3、js与vue的互补关系;4、js与vue的实践应用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
353
2024.03.11
PHP中文网为大家带来,js实现弹幕功能的方法:1、创建html文件;2、添加html代码架构;3、在body标签中使用div、input、button标签分给页面设计效果显示框、输入框、弹幕提交按钮;4、添加script标签并写入js代码来实现弹幕效果;5、通过浏览器方式查看设计效果即可。希望对大家有所帮助。
2992
2024.03.04
js事件冒泡可以解决的问题:1、简化事件处理逻辑;2、提高事件处理性能;3、实现自定义组件和交互效果;4、控制事件传播方向;5、解决事件覆盖问题;6、实现全局事件监听;7、方便调试和排查问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
2824
2024.02.23
js的split方法是字符串的一个方法,用于将字符串按照指定的分隔符分割成子字符串,并返回一个新的数组,其语法为“string.split(separator, limit)”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
1127
2023.11.24
热门下载
相关下载
精品课程
共39课时 | 5.4万人学习
共101课时 | 21.3万人学习
共39课时 | 4.9万人学习
最新文章