DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

feely0208 /

feely0208/dsh-git-guard

Verified

Git 提交前检查:密钥 / 大文件 / 冲突标记 / 调试残留 / commit 信息规范,可挂 pre-commit

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@43b4db70

@deepwhale-cn/dsh-git-guard

Listed on dsh-plugin.org

Git 提交前检查:把「密钥进仓库」「5MB 大文件」「冲突标记」「调试残留」「被跟踪的 .env」「不规范的 commit message」拦在 commit 之前。

关键词:Git 提交前检查 · pre-commit hook · 密钥扫描 · 大文件 · 冲突标记 · 调试残留 · commit message 规范 · git hook · CI 卡口 Keywords: git pre-commit hook · secret scan · commitlint · large file · merge conflict marker · debugger residue

不装会怎样

密钥写进源码、.env 被 git add . 顺手带上、5MB 视频进了仓库、<<<<<<< HEAD 忘了删、console.log 和 debugger 留在生产代码里 —— 这些问题的共同点是:提交那一刻没人拦,事后清理成本极高(密钥要作废轮换、大文件要重写历史、冲突标记直接把线上搞崩)。这个插件就是提交前最后一道闸。

能做什么

  • scan:扫工作区 / 暂存区,报告六类问题:
    • 疑似密钥 token(AWS / GitHub / Slack / Stripe / Google / 通用 api_key=...)
    • 私钥文件(-----BEGIN ... PRIVATE KEY-----)
    • 超过 5MB 的大文件(默认阈值,可用 --max-size 调整)
    • 残留合并冲突标记(<<<<<<< / ======= / >>>>>>>)
    • 调试残留(debugger、console.log / console.debug,按警告处理)
    • 被 Git 跟踪的 .env(.env.example / .env.sample 等不算)
  • msg:校验 commit message 是否符合 type(scope): subject 约定(type 白名单、标题 ≤72 字、标题与正文之间空一行、subject 不以句号结尾等;Merge / Revert / fixup! 自动豁免)。
  • precommit:组合 staged 扫描 + message 校验,有问题退出 1,可直接挂 git hook;precommit install 一键写入 .git/hooks/pre-commit(原 hook 自动备份为 .bak)。
  • 两种输出:终端里给人看的分组报告;--json 给 CI;--out 额外写一份 Markdown 报告。
  • --demo:自造一个临时 Git 仓库(密钥均为伪造值),把六类问题 + message 校验整套跑一遍,打印产物路径。

不能做什么

  • ❌ 不扫历史提交:只检查当前工作区 / 暂存区,已经提交过的密钥请另行轮换并用 git filter-repo 等工具处理历史。
  • ❌ 不是完整秘密扫描器:没做熵值检测、不覆盖所有厂商的 token 格式;正则命中是提示,需要人确认,不是「安全/不安全」判定。
  • ❌ 不管理 hook:只写 .git/hooks/pre-commit(会备份原文件),不接管 husky / lefthook 等工具;团队流水线请按自己的编排接入。
  • ❌ message 规则是常见子集:Conventional Commits 的常见 type 集合,团队自定义 type / 模板需自行扩展代码。
  • ❌ console.log 只算警告:默认不拦截(--strict 可把警告也当错误);也不分辨日志是否在测试文件里。
  • ❌ 不自动迁移大文件:只报出来,不会执行 Git LFS 或重写历史。
  • ⚠️ 需要本机装 Git;纯 Node ESM,不联网、不装依赖。

安装

dsh plugin --profile web add @deepwhale-cn/dsh-git-guard
# 或纯 CLI
npx @deepwhale-cn/dsh-git-guard --help

用法

dsh-git-guard scan                        # 扫当前仓库(工作区 + 暂存区)
dsh-git-guard scan staged --input <目录>  # 只看暂存区
dsh-git-guard scan --json                 # 给 CI
dsh-git-guard msg --message "feat(api): 支持批量导出"
dsh-git-guard precommit --input <目录>    # 退出码 1 = 拦下提交
dsh-git-guard precommit install --input <目录>
dsh-git-guard --demo

挂进 git hook 后,每次 git commit 前自动跑 precommit;退出码 1 会阻止提交。 确实需要跳过时用 git commit --no-verify(不建议)。

License

MIT © 温州深鲸智能科技有限公司

—/ 5

No ratings yet

Verified DSH bundle

Commit 43b4db705f19

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout