用途
git-commit 用于在 Git 工作区中执行原子化提交。其核心原则是:一次提交只对应一个可交付的行为。当工作区包含多个互不相关的改动时,技能不会将它们一次性全部提交,而是先分类,再让用户选择先提交哪一组。适用于用户要求“提交改动”“创建提交”或使用 /commit 命令时。
主要能力
- 变更分类:通过 git status --porcelain、git diff、git diff --staged 查看全部改动,按“可交付行为”分组(如缺陷修复、新功能、重构、配置变更)。存在两个及以上无关关注点时,先停下并询问用户要提交哪一个。
- 智能暂存:只暂存属于所选逻辑改动的文件或代码块;文件混合多个关注点时使用 git add -p 逐个代码块暂存。禁止提交密钥文件,并建议将其加入 .gitignore。
- 原子性校验:提交前用 git diff --staged 确认暂存内容是否满足“单一可交付行为、仅此改动可编译构建、可理解、行为变更附带测试”等检查;不通过则用 git restore --staged . 取消暂存并重新拆分。
- 提交信息生成:根据暂存差异确定类型(type)、范围(scope)和描述,遵循 Conventional Commits 格式,描述使用现在时祈使语气且不超过 72 字符,正文为必填并解释“为什么”。
- 提交执行:支持多行提交信息,正文与描述之间必须有空行。
- 签名提交:若已配置 GPG 或 SSH 签名密钥,可用 git commit -S 签名单次提交,或设置 commit.gpgsign 默认签名。
- 辅助操作:提供取消暂存、修改最近提交信息、补入遗漏文件、创建 fixup 提交、rebase autosquash、git commit --dry-run 预览等命令示例。
使用方式
按技能内步骤操作:先分类变更,再仅暂存目标改动,然后校验暂存原子性,生成并执行提交信息。提交类型包括 feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert;破坏性变更可在类型后加感叹号或在页脚写 BREAKING CHANGE。页脚可选,用于关联 Issue(如 Closes #123)或说明破坏性变更。
适用场景
适合希望提交历史清晰、可审查、可用 git bisect 定位问题的开发流程。技能强调按依赖顺序拆分提交:先模型/类型/迁移,再服务/业务逻辑,最后集成/端点/UI/配置;测试与行为同提交,文档与用户可见变更同提交。
限制与安全约定
不更新 git config;未经明确请求不运行破坏性命令(如 --force、hard reset);不经用户要求不跳过钩子(--no-verify);不向 main/master 强制推送。提交因钩子失败时应修复并创建新提交,而非 amend。该技能的具体安装方式与平台支持暂未提供。