中文EN

@duke-dsh-plugins/dsh-git-manager

git已测通过npmMIT

DeepSeek Harness 的 Git 工作区管理:输入框「模式」选择器旁的仓库感知入口,打开与设置同规格的面板,覆盖 diff/commit、分支、冲突、worktree 管理与带分支线的提交历史。

下载量 / Downloads
1,648
依赖体积 / node_modules
6.79 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add @duke-dsh-plugins/dsh-git-manager

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

<p align="center">

<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" color="#4D6BFE"><line x1="6" x2="6" y1="3" y2="15"/><circle cx="18" cy="6" r="3"/><circle cx="6" cy="18" r="3"/><path d="M18 9a9 9 0 0 1-9 9"/></svg>

</p>

<h3 align="center">DeepSeek Harness Git 管理插件</h3>

<p align="center">

<img src="https://img.shields.io/badge/DSH-Plugin-4D6BFE?style=flat" alt="DSH plugin">

<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-2EA44F?style=flat" alt="MIT License"></a>

<img src="https://img.shields.io/badge/Web%20UI-Yes-22C55E?style=flat" alt="Web UI">

</p>

<p align="center"><sub>中文</sub></p>


为 DeepSeek Harness(DSH) Web UI 打造的 Git 工作区管理插件:不用再切到外部 Git 客户端——输入框工具行的 Git 按钮一键打开与「设置」同规格的居中面板,按六个功能域覆盖日常全部 Git 操作:变更暂存(hunk 级 / 行级 / stash)、分支与 tag、带分支线图形的提交历史(交互式 rebase / revert / reset / fixup / undo / 范围对比)、合并冲突解决、worktree 管理、remote / config 仓库设置,以及子仓库支持(git submodule 与目录内嵌套独立仓库:变更聚合、仓库切换、误暂存/误删防护)。

功能全景(六域)

面板按六个功能域组织(六个 Tab:变更 / 分支 / 历史 / 冲突 / Worktree / 设置):

域 · 能力

📝 变更 · 置顶提交框(多行 message + amend)、staged / unstaged / untracked 三组文件、文件级暂存/取消暂存/全部暂存,diff 窗口内 hunk 级 + 行级操作(暂存/撤销/取消暂存此块、点选任意行暂存/撤销,IDEA 式逐块),文件「丢弃」(CJK 文件名完整支持)、文件历史,stash 全家:暂存更改到 stash(可含未跟踪)、列表、应用 / 弹出 / 删除 / 清空

🌿 分支 · 本地 / 远程列表(upstream、ahead/behind 角标),按 / 分组的可折叠文件树;新建分支支持起点下拉 / 行内「基于此建分支」预填起点 + 创建后切换;切换 / 改名 / 删除(未合并需二次确认)/ 合并,与当前分支对比 diff;Tag 区:列表、新建(含 annotated + force)、push 到远程、删除

🕸 历史 · 分支线图形(git log --all --date-order + Host 侧布局计算 + Client 纯 SVG 渲染,长跨度边自动省略淡化、悬停高亮单条分支走向)+ refs 徽章 + 「加载更多」渐进取全窗;过滤条(ref/tag、文件路径、作者、grep、起止日期);提交详情侧栏(完整信息 + 变更文件统计,点文件开只读 diff / blame / 该文件历史);范围对比(依次选 base / head 两提交看 diff);交互式 rebase(「从这里整理历史…」:todo 排序 + pick/squash/fixup/drop/edit + squash 信息编辑);提交操作:Revert、Reset 当前分支(soft / mixed / hard)、fixup 修正任意提交、cherry-pick 到当前分支、undo(撤销上次提交 / 撤销上次分支移动,带重做提示)

🔀 冲突 · 合并进行中横幅(继续 / 中止)+ 每文件三种解决方式:ours / theirs / 手动编辑(base / ours / theirs 三栏对照 + 可编辑区);revert / cherry-pick 冲突复用同一流程

🌳 Worktree · 列表 / 添加弹窗(路径 + 新分支名 + 起点;成功后自动注册为 DSH 工作区,workspace-write 沙盒下直接可写)/ 删除(脏目录需 force 二次确认)/ prune

⚙️ 设置 · Remote 管理:列表(fetch / push URL)、添加、重命名、删除;Config 读写:local / global 切换、key-value 表编辑、添加、删除

🎨 主题适配 · 颜色全部走 DSH 设计 token(主按钮与输入框发送按钮同色),明暗主题自动跟随

子仓库(submodule + 嵌套独立仓库)

面板把工作区里的 git 仓库组织成一棵「仓库树」,两类子仓库统一支持:

  • git submodule(.gitmodules 注册,含未初始化 / 指针不符 / 冲突状态识别)与嵌套独立仓库(目录里有自己的 .git、未注册为 submodule 的克隆)。
  • 变更 Tab 聚合:文件列表按仓库分组(主仓库在最上,其余按相对路径排序),每组组头带分支 / 脏计数 / 子模块状态徽标;组内暂存 / 取消暂存 / 丢弃 / diff / blame / 文件历史 / hunk 操作全部作用于该组仓库自身。子模块指针变更显示「指针 abc123d → def456e」,可直接暂存新指针或「进入」子仓库处理内容改动。
  • 仓库切换器:分支 / 历史 / 冲突 / Worktree / 设置五个 Tab 顶部一键切换当前仓库,Fetch / Pull / Push 与全部操作跟随所选仓库;提交框也可选目标仓库。
  • 指针 diff 与跳转:子模块指针变更在 diff 窗口显示「指针 abc123d → def456e」,可一键「在子仓库中查看 a..b」——自动切作用域、切历史 Tab 并发起范围对比;指针提交不在子仓库对象库时按钮自动禁用。
  • 指针冲突解决:合并产生的子模块指针冲突在冲突 Tab 提供「用我们的指针 / 用他们的指针」(指针没有可编辑文本,不提供手动编辑)。
  • 安全防护:嵌套独立仓库不会被「暂存全部」误折成意外 gitlink(自动 exclude),也不会被「删除全部未跟踪」连历史一起删掉(自动跳过并提示;未跟踪目录已支持整目录递归丢弃)。
  • submodule 管理(设置 Tab「子仓库」管理区):子模块行提供 更新 / 同步 url / 卸载(危险二次确认)/ 进入,未初始化子模块一键「初始化并拉取」(变更 Tab 组头也有同款「初始化」按钮);「添加子模块」表单支持本地路径 url(自动放行 file 协议);嵌套独立仓库可就地「注册为 submodule」(目录内容不动,仅写 .gitmodules 与 gitlink,需配置 remote.origin.url);多仓库时头部提供「Fetch 全部 / Pull 全部」(串行逐仓库、单点失败不中断、结束聚合汇总成功/失败)。

仓库感知入口与面板

功能 · 说明

🔘 仓库感知入口 · composer 底部「模式」选择器旁的 Git 按钮(分支图标 + 当前分支名),hero 页与会话内都有;仅当前目录是 git 仓库时显示(60s 轮询缓存,非仓库完全不占位)

🪟 设置同规格面板 · 800px 居中弹窗、圆角 24、毛玻璃遮罩;Esc 与遮罩点击均可关闭;DOM 经 Portal 落到 body 层(z-index 1000),不被任何侧栏插件遮挡;diff 窗口、确认/表单弹窗全部 Portal 落 body 并按层级叠加(1000 / 1050 / 1100),Esc 只关栈顶弹层

Remote 方法一览

Host 侧 gitManager 服务暴露的 Remote 方法(客户端 RPC 唯一入口),v2 新增/扩展部分加粗:

方法 · 用途

probe / overview / status · 仓库探测(是否 git 仓库、当前分支)与整体状态概览

repoTree · 子仓库树发现:主仓库 + 全部 submodule(含未初始化)+ 嵌套独立仓库,每节点带分支与脏计数摘要

diff / stageHunk · 查看工作区 diff;按 hunk 序号暂存单个块(git apply --cached)

stage / unstage / discard · 文件级暂存 / 取消暂存 / 丢弃(含未跟踪);stage 支持 exclude(「暂存全部」排除嵌套仓库目录,防意外 gitlink)、discard 返回 skipped(含 .git 的嵌套仓库被保护跳过)

commit · 提交(支持 amend、全部暂存并提交)

stashList / stashPush / stashPop / stashApply / stashDrop / stashClear · stash 全家:列表、暂存(可含未跟踪)、弹出、应用、删除、清空

branches / branchCreate / branchDelete / branchRename / merge · 分支列表与新建 / 删除 / 改名 / 合并

tags / tagCreate / tagDelete · tag 列表、新建(annotated / force)、删除

log(扩展) · 提交列表 + 分支线布局;新增 ref / 路径 / 作者 / grep / 日期过滤参数

push(扩展) / pull / fetch · 网络操作(netResult 包络);push 新增 refSpec 参数(用于 push tag)

diffRange · 任意 base..head 范围对比(patch / stat 两种输出)

blame · 逐行归属查询(sha / 作者 / 时间 / 行内容,支持行区间与截断)

reflog · 引用日志(head 移动历史)

revert · Revert 指定提交(冲突不抛错,进 REVERT_HEAD 态走冲突流程)

reset · Reset 当前分支(soft / mixed / hard)

rebasePlan / rebaseRun · 交互式 rebase:todo 计划(base..HEAD)+ 执行(pick/squash/fixup/drop/edit、排序、squash 信息替换)

fixupCommit · 用暂存改动修正任意历史提交(fixup / squash + autosquash rebase)

rebaseBranch · 当前分支 rebase 到指定分支之上

lineApply · 行级暂存 / 撤销 / 取消暂存(diff 行区间最小补丁)

cherryPick / mergeContinue / abortMerge · cherry-pick / rebase 与冲突后续:继续(按状态分派 commit / rebase --continue)/ 中止(merge / cherry-pick / revert / rebase 通用)

resolveConflict · 冲突解决(ours / theirs / 自定义内容)

remoteAdd / remoteRemove / remoteRename · remote 增 / 删 / 改

configList / configSet / configUnset · git config 读 / 写 / 删(local / global)

worktrees / worktreeAdd / worktreeRemove / worktreePrune · worktree 管理

init · 目录初始化为 git 仓库

工作原理

Composer Git 按钮(conversation.input.l

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:12,最后更新 2026-10-21

链接

GitHub · Homepage · npm

同类插件