夜雨聆风学习资料网

ARTICLE · 1087999

DSH插件之——安全优先的 Git 工具插件

DSH插件之——安全优先的 Git 工具插件

dsh-git-helper

安全优先的 Git 工具插件(dsh-git-helper v0.1.0):只读的状态/差异/历史/分支查询,加上一个带三重防护的提交工具。

安装

npm install dsh-git-helper

工具列表

git_status

查看工作区状态:当前分支、与上游的领先/落后、已暂存/未暂存/未跟踪/冲突文件分类列表。无参数。

git_diff

查看差异,支持三种范围:

参数

类型

说明

scope

string

unstaged(默认)/ staged / commit

commit

string

scope=commit 时必填,如 "a1b2c3d"、"HEAD~1"

path

string

可选,限定文件或目录

context_lines

number

可选,上下文行数 0–10,默认 3

输出附带变更摘要(文件数/±行数);超过 8000 字符自动截断并提示缩小范围。

git_log

提交历史,格式 短哈希 | 作者 | 日期 | 标题。

参数

类型

说明

limit

number

1–50,默认 10

author

string

按作者过滤

since

string

如 "2026-09-01"、"2 weeks ago"

oneline_only

boolean

默认 true;false 时附带变更文件统计

git_branch

分支概览(只读):当前分支标记、各分支最近提交、与上游的领先/落后。

参数

类型

说明

include_remote

boolean

默认 false

git_commit

受控提交,三重防护:

1.前置校验:暂存区为空且未指定暂存方式时拒绝提交并列出可提交文件;存在合并冲突时拒绝。

2.提交信息规范:非空、首行 ≤72 字符,详细说明放到空行后的正文。

3.后置确认:返回提交哈希 + 变更统计。

参数

类型

说明

message

string

必填

files

string[]

可选,指定要提交的文件(先 add 再提交)

add_all

boolean

默认 false;true 时 git add -A

安全边界

本插件不提供 push、branch 删除、rebase/merge、checkout 丢弃改动、stash、amend 等破坏性操作。git 命令通过 execFile 调用(无 shell 注入面),超时 15 秒。

测试

npm test

测试在临时 git 仓库中运行,覆盖状态识别、差异截断、历史过滤、提交防护与正常路径、非仓库目录报错,共 28 项断言。

版本历史

0.2.0(2026-09-13)

•新增 git_blame 工具:行级追溯 + 作者分布统计(兼容 boundary 提交)

•新增 check_commit_message 工具:提交信息体检(长度/CC 格式/正文分段)

•git_commit 新增 strict_cc 参数:Conventional Commits 强校验

Roadmap(v0.3 候选)

•git stash / restore 支持

•分支对比(two-dot diff 摘要)

•tag 管理与查询

源码与发布地址

•源码:https://github.com/geeklei/dsh-plugins/tree/main/dsh-git-helper

•npm:https://www.npmjs.com/package/dsh-git-helper

典型场景

1. 提交前检查

用户:帮我看看现在有哪些改动,准备提交

git_status + git_diff 快速了解工作区状态与改动内容。

2. 提交信息规范校验

用户:我的 commit message 符合规范吗

check_commit_message(支持 strict_cc 严格 Conventional Commits)逐项给出检查结论。

3. 追溯某行的来龙去脉

用户:这一行为什么这么写

git_blame 定位作者与提交(已兼容首笔提交的 boundary hash)。

4. 分支与历史梳理

用户:这个分支从哪切的、最近谁改了什么

git_branch + git_log 组合查看。

5. 生成提交

用户:把这次改动提交了

git_commit 生成提交(提交信息建议先过 check_commit_message)。

其他插件集成说明

协作插件

集成方式

dsh-text-diff

用 diff_text 得到统一差异,与本插件 git_diff 输出互相印证

dsh-hash-checksum

对关键文件取摘要,确认提交前后内容一致

dsh-workspace-journal

把提交记录写入工作区日志,形成变更时间线

dsh-fs-inspector

提交前用 recent_files 确认没有意外改动的大文件

dsh-todo-audit(二期 D13)

提交前扫描 TODO/FIXME,避免把未完成标记带入主干

FAQ

Q:`git_commit` 会自动 push 吗? 不会,只做本地提交。推送需显式执行,且注意凭据助手(Windows 下建议 -c credential.helper=manager)。

Q:blame 首笔提交为什么特殊? Git 对 boundary 提交的 hash 会加 ^ 前缀,本插件已兼容解析,不会漏掉最后一行。

Q:能在无 tty 环境用吗? 可以,所有 git 调用均以非交互方式执行,不会卡在等待输入。

Q:会修改我的仓库吗? 只有 git_commit 会写(产生提交);其余工具均为只读查询。

以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

谢谢你看我的文章,我们,下次再见。

相关学习资料