前言¶
使用 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 操作更貼近當前開發上下文。