name: high-quality-commit description: 使用适当的git提交策略提交代码变更。基本采用对现有git提交的squash策略,必要时重构整个分支的git提交历史。在实现完成或用户请求git提交时使用。
高质量提交
本技能提供将代码变更记录为高质量git提交的全面指导。
使用说明
步骤1:确认分支和git提交历史
使用以下命令确认当前状态:
git status
git log --oneline --graph origin/main..HEAD
确认事项:
- 当前分支名称
- 从main分支领先了多少个git提交
- 每个git提交的内容和粒度
步骤2:判断git提交策略
根据以下标准选择git提交策略:
策略A:Squash(基本策略)
满足以下条件时,squash到现有git提交:
- 分支中已存在git提交
- 变更内容与现有git提交的主题/功能相关
- 没有合理的理由分开提交
执行方法:
git add -A
git commit --amend
请适当更新提交信息。
策略B:新建git提交
以下情况新建git提交:
- 分支中的首次提交
- 与现有git提交不同的独立变更
- 分开提交能使历史更易理解
执行方法:
git add -A
git commit
策略C:交互式变基(提交重构)
以下情况重构整个分支的git提交:
- 想将多个小提交整理为逻辑单元
- 想改变提交顺序
- 想删除不必要的提交
- 想将提交历史重组为有意义的单位
执行方法:
git rebase -i origin/main
在编辑器中执行以下操作:
pick:保持提交不变squash或s:合并到前一个提交reword或r:更改提交信息- 通过改变行顺序来改变提交顺序
步骤3:git提交信息指南
git提交信息按以下格式描述:
<type>: <subject>
<body>
<footer>
Type:
feat:新功能fix:错误修复refactor:重构test:测试添加/修正docs:文档变更chore:构建过程或工具变更
Subject:
- 50字符以内
- 用命令形描述(例如:用“Add”而非“add”)
- 末尾不加句号
Body(可选):
- 说明变更理由和背景
- 描述为什么变更,而非变更了什么
- 每72字符换行
Footer(可选):
- 引用Issue编号(例如:
Closes #123) - 描述破坏性变更
步骤4:git提交后确认
git提交后,确认以下内容:
git log -1 --stat
git status
- git提交是否正确创建
- 是否包含所有预期文件
- 提交信息是否恰当
重要注意事项
- 不要在main分支执行:请勿直接在main分支提交
- 不留注释:请删除代码中的说明注释
- 原子提交:每个提交应独立且有意义
- 一致性:遵循项目现有的提交风格
策略选择流程图
分支有提交吗?
├─ 无 → 新建git提交
└─ 有 → 变更与现有提交主题相同吗?
├─ 是 → Squash(git commit --amend)
└─ 否 → 有理由分开提交吗?
├─ 有 → 新建git提交
└─ 想整理历史 → 交互式变基