关于 git
指导开发者按 Conventional Commits 编写 Git 提交信息并组织提交的技能,强调一致、原子且便于审查的改动;PR 工作则交由另一项技能说明。
主要功能
- 01Conventional Commits 类型与格式
- 02可选且具体的范围说明
- 03主题行措辞与长度规则
- 04破坏性变更标记和版本递增
- 05原子提交及正文中的原因说明
适用场景
- 01为修复或功能编写提交信息
- 02为局部改动选择范围
- 03记录破坏性变更及其版本影响
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ epicenterhq/ epicenter --skill git安装后在 Claude Code 中输入/git确认已加载。
详细介绍
Git 提交指南
相关技能:如需让每次提交都便于审查和审计,并将多文件更改按依赖顺序分批处理,请参阅 standalone-commits。有关 PR 标题、描述、变更日志条目、问题引用和合并指南,请参阅 pull-request。
PR 范围
PR 标题、PR 正文、变更日志条目、问题链接、用户名验证、CODEOWNERS 说明和合并策略均属于 pull-request。
参考资料
本技能将规则直接列在文档中。处理 PR 时,请使用 pull-request。
Conventional Commits 格式
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
提交类型
feat:新功能(对应语义化版本中的 MINOR)fix:错误修复(对应语义化版本中的 PATCH)docs:仅修改文档refactor:既不修复错误也不添加功能的代码更改perf:性能改进test:添加或修改测试chore:维护任务、依赖更新等style:代码风格更改(格式调整、缺少分号等)build:构建系统或依赖项更改ci:CI 配置文件和脚本更改
范围指南
- 范围是可选的:仅在有助于明确说明时添加
- 使用小写,并放在类型后面的括号中:
feat(transcription): - 优先使用具体的组件/模块名称,而非泛泛的术语
- 当前做法很好:使用组件名称(
EditRecordingDialog)、功能领域(transcription、sound) - 避免使用
ui或backend等过于泛泛的范围,除非确实合适
何时使用范围
- 更改仅涉及特定组件/模块时
- 有助于区分相似更改时
- 在领域划分明确的大型代码库中工作时
何时不使用范围
- 更改对多个领域的影响相当时
- 仅靠类型就足以描述更改时
- 更改较小且一目了然时
描述规则
- 冒号和空格后立即以小写字母开头
- 使用祈使语气(用 "add",而不是 "added" 或 "adds")
- 末尾不加句号
- 首行控制在 50-72 个字符以内
破坏性更改与版本递增
我们的单体仓库采用统一的版本方案(8.Y.Z),主版本号 8 固定不变:
- Patch(默认):每个合并的 PR 都会递增
Z(例如,8.0.1→8.0.2) - Minor:在类型/范围后添加
!:feat(api)!: change endpoint structure,递增Y并将Z重置 - Major:仅手动递增。仅在“确有需要时”使用。不要使用
!来期待主版本号递增。
使用 ! 时,请在提交页脚中添加 BREAKING CHANGE: 并说明详情。
符合当前风格的示例:
feat(transcription): add model selection for OpenAI providersfix(sound): resolve audio import paths in assets modulerefactor(EditRecordingDialog): implement working copy patterndocs(README): clarify cost comparison sectionchore: update dependencies to latest versionsfix!: change default transcription API endpoint
提交信息最佳实践
“原因”比“内容”更重要
提交信息的主题行描述更改了什么,正文解释为什么更改。
良好的提交(说明动机):
fix(auth): prevent session timeout during file upload
Users were getting logged out mid-upload on large files because the
session refresh only triggered on navigation, not background activity.
不好的提交(只描述更改内容):
fix(auth): add keepalive call to upload handler
第一条提交信息能告诉未来的开发者代码存在的原因。第二条则会让他们不得不翻阅代码才能理解其用途。
其他最佳实践
- 绝不包含 Claude Code 或 opencode 的水印或署名
- 每次提交都应代表一个独立、原子化的更改
- 为未来的开发者(包括你自己)编写提交信息
- 如果需要用多行才能描述所做的更改,请考虑拆分提交
不应包含的内容:
Generated with [Claude Code](https://claude.ai/code)Co-Authored-By: Claude <[email protected]>- 任何提及 AI 助力的内容
Generated with [opencode](https://opencode.ai)Co-Authored-By: opencode <[email protected]>- 工具署名或水印
评论
支持 Markdown