mcpField
G
git-commit

git-commit

github.com/github开发40.5k47.6k 次安装今天更新
代码仓库

关于 git-commit

指导按 Conventional Commits 规范创建 Git 提交的工作流。它根据差异确定类型、范围和摘要,并要求先检查仓库规则,避免不安全的历史修改。

主要功能

  1. 01检查仓库提交规范
  2. 02查看已暂存与未暂存更改
  3. 03按逻辑变更划分文件
  4. 04编写 Conventional Commit 消息
  5. 05核验生成的提交

适用场景

  1. 01根据差异准备功能或修复提交
  2. 02提交前拆分无关变更
  3. 03处理破坏性变更标记与页脚
  4. 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构建系统或依赖项
ciCI 配置
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