关于 git-commit
指导按 Conventional Commits 规范创建 Git 提交的工作流。它根据差异确定类型、范围和摘要,并要求先检查仓库规则,避免不安全的历史修改。
主要功能
- 01检查仓库提交规范
- 02查看已暂存与未暂存更改
- 03按逻辑变更划分文件
- 04编写 Conventional Commit 消息
- 05核验生成的提交
适用场景
- 01根据差异准备功能或修复提交
- 02提交前拆分无关变更
- 03处理破坏性变更标记与页脚
- 04检查敏感信息及钩子失败
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill git-commit安装后在 Claude Code 中输入/git-commit确认已加载。
详细介绍
使用 Conventional Commits 编写 Git 提交信息
按照 Conventional Commits 1.0.0 规范编写 Git 提交信息。根据 diff 确定类型、范围和摘要。
信息格式
<type>(<scope>): <summary>
<body>
<footer>
- 范围、正文和页脚均为可选项。不写范围时,使用
<type>: <summary>。 - 摘要使用祈使语气,例如使用 “add”,而不是 “added” 或 “adds”。
- 首行不超过 72 个字符。末尾不要加句号。
- 在正文中说明更改内容及原因。
- 每个页脚使用
Token: value或Token #value格式,例如Refs: #456或Closes #123。Conventional Commits 接受这两种格式,但 Git 仅将Token: value识别为尾注。Token 中的空格用-替代。
类型
Conventional Commits 仅定义了 feat 和 fix。其他类型来自 Angular 约定(@commitlint/config-conventional)。如果仓库有自己的类型列表,请使用该列表。
| Type | 用途 |
|---|---|
feat | 新功能 |
fix | 修复 bug |
docs | 仅修改文档 |
style | 仅调整格式,不改变逻辑 |
refactor | 不属于新增功能或修复的代码更改 |
perf | 性能改进 |
test | 新增或修改测试 |
build | 构建系统或依赖项 |
ci | CI 配置 |
chore | 其他维护工作 |
revert | 撤销之前的提交 |
破坏性更改
在冒号前添加 !,或添加 BREAKING CHANGE: 页脚。Token 使用大写字母。BREAKING-CHANGE: 也正确。
feat(api)!: remove the v1 endpoints
BREAKING CHANGE: Clients must use the v2 endpoints.
工作流
1. 阅读仓库规则
编写提交信息前,先查找提交规则:
- commitlint 配置,例如
commitlint.config.js或.commitlintrc.json。 CONTRIBUTING.md。- 最近的提交信息:
git log --oneline -10。
如果仓库规则与本技能不同,请遵循仓库规则。
2. 检查更改
git status --porcelain
git diff --staged
git diff
如果没有更改,请告知用户。不要创建空提交。
3. 暂存文件
每个提交只包含一个逻辑更改。如果已暂存的文件包含多个更改,请先取消暂存其他更改涉及的文件,然后暂存本次更改涉及的文件:
git reset -q -- path/to/other-file1 path/to/other-file2
git add -- path/to/file1 path/to/file2
git add -- '*.test.*'
git add -- src/components/
- 将 glob 放在引号中。不加引号时,shell 会展开 glob,导致无法找到子目录中的文件。
- 不要使用
git add -p或git add -i。这些命令会等待人工输入。 - 解决合并冲突后,使用
git add --resolved。该命令只暂存已解决的文件。如果文件中仍有冲突标记,命令会停止。 - 使用
git diff --staged --name-only检查已暂存文件列表。不要提交机密信息,例如.env文件、credentials.json或私钥。
4. 编写提交信息
根据 diff 确定每个部分:
- Type:更改类型。
- Scope:更改影响的模块或区域。
- Summary:用一行说明更改内容。
5. 提交
每段分别使用一个 -m 选项。Git 会在各段之间插入空行。此命令适用于 Bash、PowerShell 和其他 shell。
git commit -m "feat(auth): add token refresh"
git commit -m "fix(parser): accept empty input" -m "An empty file caused a crash." -m "Closes: #123"
如果提交信息较长,请将其写入临时文件,然后运行 git commit -F <file>。
6. 确认提交正确
git log -1 --stat
git status --porcelain
安全规则
- 不要更改 Git 配置。
- 除非用户明确要求,否则不要使用
--no-verify。钩子可能位于.git/hooks中,也可能在 Git 配置中。 - 如果钩子执行失败,Git 不会创建提交。请修复问题,重新暂存文件,然后再次运行相同的
git commit命令。不要使用--amend,因为它会更改之前的提交。 - 除非用户明确要求,否则不要更改提交历史。不要使用
git reset --hard、git rebase或实验性的git history命令。 - 除非用户明确要求,否则不要推送。不要强制推送到默认分支。
评论
支持 Markdown