mcpField
C
commitpush

commitpush

github.com/thatjuan开发150 次安装3 周前更新
代码仓库

关于 commitpush

用于安全提交并推送 Git 更改的开发 skill,适合需要在提交前检查敏感内容并处理子模块的工作流。它先扫描风险,再分析更改、生成提交信息,并包含推送失败的恢复步骤。

主要功能

  1. 01暂存前扫描密钥与敏感文件
  2. 02检测子模块及其更改状态
  3. 03分析差异并生成提交信息
  4. 04仅暂存获准的明确文件路径
  5. 05处理非快进推送及冲突
  6. 06强制推送须经明确授权

适用场景

  1. 01提交前排查意外包含的凭据
  2. 02选择需要纳入提交的子模块
  3. 03依据仓库历史撰写提交信息
  4. 04推送被拒后尝试变基并重试

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thatjuan/agent-skills --skill commitpush

安装后在 Claude Code 中输入/commitpush确认已加载。

附带文件README.mdreferences/sensitive-patterns.md

详细介绍

提交并推送

一种安全的提交并推送工作流:暂存前筛查机密和敏感文件,检测子模块以进行定向提交,并处理完整的提交与推送流程,包括推送失败后的恢复。

工作流

阶段 1:安全筛查

安全筛查会在任何暂存操作之前运行,找出提交后可能带来风险的文件和内容。

检测目标:

  • 机密和凭据(API 密钥、令牌、密码、私钥)
  • 含敏感值的环境和配置文件(.env、.env.*、凭据文件)
  • 证书和密钥文件(.pem、.key、.p12、.pfx、.jks)
  • 云服务提供商凭据文件(AWS、GCP、Azure 配置)
  • 数据库连接字符串和转储文件
  • 大型二进制文件和构建产物

筛查流程:

  1. 将 git status 的输出与已知敏感文件模式进行比对(参见 sensitive-patterns.md)
  2. 扫描 git diff 内容中的内嵌机密,包括高熵字符串、API 密钥前缀、硬编码密码和连接字符串
  3. 向用户展示被标记的文件或内容,并建议排除、继续或中止

对于不明确的情况(例如,无法确定配置文件是否包含真实凭据),会先向用户询问并澄清,然后再继续。

阶段 2:子模块检测

包含子模块的仓库(桥接仓库)需要用户明确指定提交范围。

检测:git submodule status --recursive 用于识别子模块及其变更状态(+ 前缀表示存在未提交的更改)。

存在有更改的子模块且未指定范围时:

  • 向用户展示有更改的子模块列表和父仓库
  • 由用户选择要纳入本次提交周期的子模块
  • 先提交并推送所选子模块(深度优先),然后父仓库再暂存更新后的子模块引用

**不存在子模块或已指定范围时:**跳过此阶段。

阶段 3:变更分析

分析已暂存和未暂存的更改,为生成提交消息提供依据。

输入:

  • git status — 查看已更改、已暂存和未跟踪文件的概况
  • git diff 和 git diff --staged — 查看详细的变更内容
  • git log --oneline -5 — 查看近期提交的风格,以保持一致

提交消息生成:

  • 如果仓库遵循约定式提交格式(根据近期历史检测),则使用该格式
  • 提交消息重点说明“为什么”,而不是“是什么”
  • 当更改集中在特定范围时包含范围信息(例如,fix(auth): ...)
  • 提交消息仅包含变更说明,不包含共同作者署名
阶段 4:暂存、提交、推送

**暂存:**通过阶段 1 筛查的文件会使用 git add 和明确的文件路径进行暂存,而不使用 git add . 或 git add -A 等不加区分的命令。

**提交:**使用阶段 3 生成的消息创建提交。

推送:git push 将更改发送到远程仓库。如果不存在上游跟踪分支,则使用 git push -u origin <branch>。

阶段 5:推送失败后的恢复

**推送被拒绝(非快进):**尝试执行 git fetch + git rebase,然后重试推送。

**强制推送:**必须获得用户明确授权。使用 --force-with-lease(而非 --force)。

**冲突或无法解决的错误:**向用户报告完整情况,以便手动解决。

参考

文件何时阅读
sensitive-patterns.md阶段 1 期间——敏感文件模式和内嵌机密标记的完整列表

参数

可选的用户提供上下文:要提交的特定文件、覆盖默认值的提交消息、范围指令(例如,“仅父仓库”“仅子模块 X”)。

评论

支持 Markdown