Community编程与开发github.com

提交规范

保持提交次数少且提交信息简短。在提交前、推送前、修复问题过程中提交堆积时,或提交检查钩子发出警告时使用。

提交规范 是什么?

该技能(jksim/agent-skills-jksim)旨在严格执行 Git 提交信息格式和提交数量的团队纪律,基于“一项变更只有逻辑上必要的提交”这一核心原则。开发者可以在提交前、推送前、修复问题过程中提交过多时,或 `commit-check` 钩子发出警告时调用此技能。其核心流程包括:控制主题行在 72 字符以内、正文不超过 5 行;确保每个提交仅包含一个逻辑变更;推送前通过 `git commit --fixup` 和 `git rebase --autosquash` 压缩修正性提交;以及撰写精简的代码注释。该技能覆盖所有使用 Git 的 AI 辅助开发工具(如 Claude Code、Cursor、Codex),并提供了明确的验证清单,帮助开发者避免未压缩的“wip”提交、混合变更的提交或冗长的提交正文等常见陷阱。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jksim/agent-skills-jksim/tree/HEAD/skills/commit-hygiene

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

提交规范 是做什么的?

概述

Jarrett 规则的第 4 条:一项变更只包含其逻辑上必需的提交。审查者阅读的是每个变更的干净提交,而不是尝试过程的历史记录。注释要简短。

commit-check 钩子在 git commit 消息超出限制时会发出警告。它不会阻止提交,而是由你来修正该提交。

何时使用

  • 每次提交前。
  • 每次推送前。
  • 当你为了修复一个问题而进行了多次提交时。
  • 当 commit-check 钩子发出警告时。

流程

1. 编写提交信息

  • 主题:不超过 72 个字符。使用祈使语气:例如使用“添加规则钩子”,而不是“已添加规则钩子”。
  • 正文:不超过 5 行。如果主题已足够,则省略正文。
  • 说明更改了什么以及为什么更改。不要逐一描述每个文件。
  • 使用简化英语。参见 simplified-english 技能。

2. 每个逻辑变更只进行一次提交

  • 一个逻辑变更:审查者可以作为一个整体接受或拒绝的功能切片、修复或重构。
  • 不要在一次提交中混入重构和行为变更。
  • 不要提交每一次尝试。只有在变更有效且测试通过后才进行提交。

3. 在推送前压缩修正性提交

修正性提交用于更正同一变更中较早的提交。例如:“fix typo”、“wip”、“address review”。

  1. 使用 git commit --fixup <sha> 创建修正性提交。
  2. 无需编辑器进行压缩:GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash <base>。
  3. 如果变基因冲突而停止,修复文件并运行 git add <files>。然后运行 GIT_EDITOR=true git rebase --continue。要停止,运行 git rebase --abort。
  4. 再次运行测试。
  5. 检查结果:git log --oneline <base>..HEAD。

如果最后一个提交是需要修正的提交,请使用 git commit --amend --no-edit。

警告:不要重写已经推送到共享分支上的提交。请先询问用户。重写会迫使每个团队成员重置他们的历史。

4. 保持注释简短

  • 仅在代码含义不清晰时才编写注释。
  • 通常一行就够了。说明原因,而非做什么。
  • 不要在注释中记录变更历史。Git 已经保存了历史。

常见合理化说辞

合理化说辞现实情况
“小的提交能展示我的进度。”审查者需要的是结果,而非过程。压缩那些尝试性的提交。
“详细的信息能提供更多上下文。”冗长的信息没人会读。把上下文放在规格说明或 PR 中。
“我会稍后压缩。”“稍后”就是推送之后。请在推送前完成压缩。
“钩子只是警告,所以限制是可选的。”限制是团队规则。钩子发出警告是为了让你能够修正它。

警示标志

  • git log 在推送前显示“wip”、“fix”、“oops”或“try again”。
  • 一个错误修复有多个提交。
  • 提交正文列出了每个更改过的文件。
  • 注释只是重复代码本身的内容。

验证

  • 每个主题不超过 72 个字符,并使用祈使语气。
  • 每个正文不超过 5 行。
  • git log --oneline <base>..HEAD 显示每个逻辑变更对应一个提交。
  • 推送前没有残留的修正性提交。
  • 任何变基操作后测试均通过。

已知限制:钩子不会检查 git -C <dir> commit 或 git -c <key>=<value> commit。它还会跳过某些无法读取的提交信息,例如通过 -F <file> 指定的信息。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能