dsh-git-status
Git 状态(Git Graph):commit DAG 泳道图 + 未提交改动虚拟行/stash + 行内详情 diff + 分支操作(checkout/新建)。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Wongzexu/dsh-git-status说明文档
阅读完整 README ↗dsh-git-status
独立 Git 状态(Git Graph)插件:DSH Web 右缘 Git 状态浮窗,commit DAG 泳道图 + 未提交改动/stash + 行内详情 diff + 分支操作。
状态:v0.4.0 · 纯前端自渲染 DOM(greeter 模式,零 React 依赖、零构建链)+ Node half 只读/写路由。
功能
- commit DAG 泳道图:第一父链成线、列分配贪心最左、泳道复用、合并提交连线; 网格制 SVG 渲染(shadow + 彩色双 path、折角过渡、右缘渐变淡出、HEAD 加粗圆点)
- 行内 refs 徽标:HEAD(红)/ 分支(金)/ 远程(蓝)/ 标签(绿);当前 checkout 分支名加粗;
同名本地/远程分支合并为一个 pill:
⎇ main [gitee](多远程依次内嵌); 远程 HEAD 符号引用(gitee/HEAD)默认过滤 - 未提交改动虚拟行:工作区有改动时图顶部插入虚拟行(空心圆 + 灰色虚线连 HEAD), 分类显示未暂存/已暂存处数;点击展开按「更改 / 暂存的更改」分组的详情 (VS Code 语义:部分暂存文件两组各出现一次,未跟踪文件带徽标)
- stash 显示:
git reflog refs/stash插入图中(双层圆 +stash@{n}徽标), 展开详情(base 显式两树 diff + untracked 第三父快照追加) - 行内展开详情:点击 commit 行 → 展开提交信息 + 变更文件(+/- 行数)+ 逐文件 diff (256KB 截断);详情盒高度自适应内容(≤340px 上限),点开 patch 不引起图跳动
- 分支操作:
- 右键本地分支徽标:切换到 x / 合并 x 到当前分支 / 重命名 x / 删除 x / 强制删除 x(未合并二次确认)
- 右键远程分支徽标:「创建本地分支 x 并检出」;右键 tag 徽标:「在 x 创建分支并检出」
- 头部「+ 新分支」对话框:客户端即时校验 + 服务端
check-ref-format权威校验双保险 - 切换守卫:未解决冲突 / 进行中操作(MERGE_HEAD 等标记)/ 目标分支在其他 worktree 检出 → 稳定错误码;
存在已跟踪未提交改动时弹「仍然切换」确认框(确认后带
force旁路;仅未跟踪文件不拦) - 合并冲突后:头部徽标 + 合并条提供「中止合并 / 继续合并」(解决冲突后
git add再继续)
- 从远程拉取:头部「⇣」按钮(仓库有 remote 才显示),一键
git fetch --all(镜像上游工具栏 Fetch from Remote(s) 形态:无对话框、prune 默认关), 无论成败图都即时刷新(多远程可能部分成功);失败分类提示 (网络/认证错误、远程不存在、远程仓库不存在或不可达) - 冲突/进行中状态徽标:头部实时显示「N 个未解决冲突」「合并/rebase 进行中」(
MERGE_HEAD等标记) - SSE 即时刷新:
/git/events订阅(2s 服务端状态键对比 + 变化推送 + 15s 心跳), 其他终端 checkout/提交时图即时刷新;10s 轮询保留作断连兜底 - 范围切换:所有分支 / 当前分支;自动刷新 + 手动刷新;非 git 仓库提示
安装指南
环境要求
- DSH(DeepSeek Harness)web 端已安装并运行(
dsh web) - 已安装
git命令行工具(插件通过系统git执行所有操作) - 插件零第三方依赖:无 React、无构建产物依赖、Node half 零 npm 包
安装插件
以本地目录方式把插件加入 web 配置档:
dsh plugin --profile web add /path/to/dsh-git-status
把 /path/to/dsh-git-status 换成插件目录的实际路径(例如本仓库根目录)。
启用
- 重启 DSH web 服务,使插件加载生效;
- 打开 DSH web 页面 → 设置页「插件」面板,确认
dsh-git-status已启用(可随时停用/启用)。