前言¶
使用 DSH 做本地开发或维护仓库时,常见的需求是把 Git 状态、提交历史、未提交变更和差异查看放在手边。过去这类操作常常要切到终端,或者另开一个 IDE 窗口。
@xbzbing/dsh-git-panel 是一个 DSH Web GUI 插件,它在对话工作区提供 IDE 风格的 Git 面板,支持分支与提交历史总览、未提交变更的提交与 amend、差异统计,以及在输入框左侧显示 zsh 风格的分支标记。插件由 xbzbing 维护,采用 MIT 许可。
这是什么¶
这是一个面向 DSH Web GUI 的客户端插件,目标是把常用 Git 查看与提交操作放进当前会话的工作区里。
它适合希望在一处完成以下事情的人:
- 查看分支、标签和提交历史。
- 查看某个提交里的变更文件和差异。
- 处理当前工作区的未提交变更。
- 暂存、取消暂存、丢弃、提交或 amend。
- 切换分支、创建或删除标签、还原或重置提交。
- 预览工作区文件,并查看代码、Markdown、HTML 和图片。
- 在输入框附近看到当前仓库名与分支状态。
插件会围绕当前工作区中的 Git 仓库工作。如果未安装 git,或者当前目录不是 Git 仓库,则只显示文件浏览能力,并以当前工作目录为根。
核心功能¶
Git 总览¶
面板提供分支和标签列表、可搜索的提交历史图。选中某个提交后,可以看到该提交对应的变更文件树和提交信息。
提交历史图支持按提交信息、commit 哈希、作者和日期等条件搜索。点击变更文件后,可以查看该文件在此提交中的差异。
变更记录¶
变更记录页处理当前工作区中尚未提交的变更。
支持的操作包括:
- 逐文件暂存、取消暂存或丢弃。
- 批量放弃选中改动。
- 手动提交。
- Amend 当前提交。
- 创建、应用、弹出或丢弃贮藏。
- 查看文件数与增删行统计。
这些操作都面向本地仓库状态,不会自动触发推送。
常用 Git 操作¶
面板还提供一些常用 Git 操作:
- 分支切换。
- 标签创建与删除。
- 提交还原或重置。
这些操作只改写本地仓库,不自动推送。重置类操作会列出将被丢弃的改动,并要求用户确认。
AI 生成提交信息¶
插件可以根据当前未提交变更和仓库既有提交风格生成提交信息。
模型可以在插件详情页固定选择。生成提交信息时,diff 内容会发送给用户所选模型的供应商。模型调用由宿主完成,插件本身不持有凭据。
输入框 Git 标记¶
输入框左侧会显示 zsh 风格的仓库名与分支标记,例如类似 <仓库名> (<分支>) 的形式。
标记会带状态颜色,并支持点击跳转到 Git 面板。该标记可以在插件详情页关闭,也可以改为在 Git 标签旁显示状态提示。
文件浏览¶
插件可以在面板内浏览工作区目录树,并预览以下文件类型:
- 代码文件。
- Markdown。
- HTML。
- 图片。
如果当前目录不是 Git 仓库,文件浏览仍可使用,并以当前工作目录为根。
差异与源码查看¶
差异查看支持统一、对照、变更前、变更后等视图,并提供语法高亮、词级改动强调、查找与图片缩放能力。
源码预览适合查看长文件和代码结构。对于图片差异,可以进行缩放和拖拽查看。
窄面板与移动端布局¶
当面板宽度小于或等于 620px 时,插件会切换为单栏钻取布局。宽度恢复后,会回到原来的多栏布局。
共享工作区护栏¶
当 DSH 的 AI 与插件共用同一仓库时,写操作会有弹窗提示。提示中会说明可以直接让 AI 执行 Git 操作。
如果操作遇到 .git/index.lock,插件会自动重试一次,并提示 Git 正忙。
语言支持¶
插件 UI 跟随 DSH 系统语言设置,支持简体中文和英文。
安装与启用¶
使用 npm 包安装正式版:
dsh plugin --profile web add @xbzbing/dsh-git-panel@latest
这条命令会把插件加入 DSH 的 web profile。安装或更新后,工作区标签栏中「对话」「轨迹」之后会出现 Git 面板,无需重启服务,也无需刷新页面。
面板内的配置项,例如详情页中的输入框标记开关、差异默认视图,走配置热写,改动即时生效。
如果需要使用预发布版本,应以 GitHub Release 中的附件 URL 安装。预发布版本号带 -,只出现在 GitHub Release,不会推送到 npm;正式版发布时,npm 与稳定 Release 同时上线。
资料中明确不建议使用类似 dsh plugin add github:… 的方式安装,应使用 npm 包或 Release 附件 URL。
本地联调时,可以把插件加入 DSH web profile 的 dsh.profile.bundles,用 file: 依赖指向本目录,然后执行:
node build.mjs
构建完成后即可生效。客户端产物替换后可以被热替换;宿主侧改动仍需重启服务。
典型用法¶
下面是一个常见的本地使用流程。
1、安装插件并进入 DSH 工作区。
安装后,工作区标签栏会出现 Git 面板。
2、查看仓库状态。
打开 Git 面板,查看分支、标签、提交历史和当前未提交变更。
3、检查差异。
选择某个提交或某个未提交文件,查看差异内容。差异视图支持统一、对照、变更前、变更后等方式。
4、处理未提交变更。
在变更记录页中,可以逐文件暂存、取消暂存或丢弃,也可以批量放弃选中改动。
5、提交或 amend。
确认变更无误后,手动提交或 amend 当前提交。
6、生成提交信息。
如果需要,可以基于当前未提交变更生成提交信息。注意:生成时会把 diff 内容发送给用户所选模型的供应商。
7、执行常用 Git 操作。
可以在面板内切换分支、创建或删除标签、还原或重置提交。这些操作只改写本地仓库,不自动推送。
8、浏览和预览文件。
在文件浏览页中查看工作区目录,并预览代码、Markdown、HTML 或图片。
适用场景与注意¶
这个插件适合以下场景:
- 使用 DSH Web GUI 管理本地 Git 仓库。
- 希望在对话过程中查看分支、提交、变更和差异。
- 希望减少在终端和 IDE 之间来回切换。
- 需要在工作区内直接完成暂存、提交、amend、贮藏等常见操作。
安装前需要注意权限和数据边界。
插件以当前 DSH 进程权限运行,因此安装前应检查源码与许可证。该插件采用 MIT 许可。
运行依赖:
- 需要
gitCLI。 - 未安装
git或目录不是 Git 仓库时,只显示文件浏览,并以当前工作目录为根。
Git 命令执行方式:
- 所有 Git 命令都经宿主
subprocess服务执行。 - 使用 argv 数组,不拼接 shell 字符串。
- 工作目录锁定在仓库根。
- 带超时与输出上限。
- 插件不改动 Git 配置。
写操作边界:
- 提交、amend、暂存、丢弃等操作都有明确入口。
- 唯一写盘动作是「放弃未跟踪条目」。
- 放弃未跟踪条目会按确认删除工作区文件。
- 如果条目本身是一个 Git 仓库,会整批拒绝。
网络边界:
- 插件自身只发起用于版本提示的请求:
GET https://api.github.com/repos/<owner>/<repo>/releases/latest
fetch、pull、push、publish等操作只在用户点击后,经 Git 命令联网。
AI 生成提交信息边界:
- 生成提交信息会把 diff 内容发送给用户在 DSH 中配置的模型供应商。
- 模型调用由宿主完成。
- 插件不持有凭据。
获取地址¶
插件目录页:
https://www.skillhub.cn/plugins/xbzbing/dsh-git-panel
GitHub 仓库:
https://github.com/xbzbing/dsh-git-panel
@xbzbing/dsh-git-panel 的价值在于把 Git 查看、变更处理和差异审阅放进 DSH 的对话工作区。对于需要在 DSH 中频繁处理本地仓库变更的开发者来说,它可以减少切窗口的成本,让 Git 操作更贴近当前开发上下文。