讲师中心 微信公众号
AI工具推荐 视频效率加速

jm-jsjkxyjs02-zlm-405

Polar Sponsor
爱发电 赞助
.NET 9.0

使用约定式提交(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 生成提交信息时,按以下步骤执行:

  1. 优先阅读 diff 统计(diff stat):明确哪些文件被修改
  2. 对变更类型进行归类:判断属于 feat、fix、refactor 等哪一类
  3. 识别作用域(scope):确定影响的模块或功能区域
  4. 撰写 subject:简洁、祈使式、不超过 50 字符
  5. 按需补充 body:对非显而易见的变更,说明其动机
  6. 按需添加 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” 指令时,执行以下流程:

  1. 运行 git status 检查当前仓库状态
  2. 运行 git diff --cached --stat 查看暂存区变更统计
  3. 运行 git diff --cached 查看暂存区完整 diff
  4. (可选)运行 git log --oneline -5 获取最近 5 条提交上下文
  5. 按上述 Conventional Commits 格式提出提交信息草案
  6. 提交前须向用户确认
目录

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
js实现base64编码
js实现base64编码

在JavaScript中实现Base64编码,最直接的方式是使用内置的btoa()函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

379

2025.10.24

html中如何调用外部js
html中如何调用外部js

在 html 中调用外部 js 可通过以下步骤:创建 js 文件并编写代码。在 html 代码中添加 <script> 标签,设置 src 属性为 js 文件路径。保存并刷新页面加载外部 js。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1712

2024.04.11

php和js的区别
php和js的区别

php和js的区别:PHP主要用于服务器端编程,而JavaScript主要用于客户端编程;PHP代码在服务器端执行,而JavaScript代码在客户端浏览器中执行。想了解更多php和js的相关内容,可以阅读本专题下面的文章。

4828

2024.03.22

JS的Document介绍
JS的Document介绍

在JavaScript中,document对象是一个非常重要的全局对象,它代表整个HTML文档。想了解更多Document的相关内容,可以阅读本专题下面的文章。

6047

2024.03.14

js中each函数的用法
js中each函数的用法

在JavaScript中,并没有一个内建的each函数,但jQuery库提供了一个非常有用的$.each() 函数,用于遍历数组或对象。想了解更多each函数的相关内容,可以阅读本专题下面的文章。

1629

2024.03.13

js和vue的关系
js和vue的关系

js和vue的关系:1、js作为web开发基石;2、vue.js作为前端框架的崛起;3、js与vue的互补关系;4、js与vue的实践应用。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

353

2024.03.11

js弹幕功能实现方法
js弹幕功能实现方法

PHP中文网为大家带来,js实现弹幕功能的方法:1、创建html文件;2、添加html代码架构;3、在body标签中使用div、input、button标签分给页面设计效果显示框、输入框、弹幕提交按钮;4、添加script标签并写入js代码来实现弹幕效果;5、通过浏览器方式查看设计效果即可。希望对大家有所帮助。

2992

2024.03.04

js事件冒泡可以解决哪些问题
js事件冒泡可以解决哪些问题

js事件冒泡可以解决的问题:1、简化事件处理逻辑;2、提高事件处理性能;3、实现自定义组件和交互效果;4、控制事件传播方向;5、解决事件覆盖问题;6、实现全局事件监听;7、方便调试和排查问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2824

2024.02.23

js的split用法
js的split用法

js的split方法是字符串的一个方法,用于将字符串按照指定的分隔符分割成子字符串,并返回一个新的数组,其语法为“string.split(separator, limit)”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1127

2023.11.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21.3万人学习

JS进阶与BootStrap学习
JS进阶与BootStrap学习

共39课时 | 4.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn