- Главная
- Плагины
- Git и код-ревью
- dsh-fork-worktree
dsh-fork-worktree
bainianzzz/dsh-fork-worktree
Fork and delete buttons on each workspace row of the Harness sidebar, plus a /fork-worktree command: fork creates a git worktree and registers it as a new workspace, delete removes the workspace folder through git worktree remove (asking again before discarding uncommitted work) and drops the registration.
Установка
dsh plugin --profile web add github:bainianzzz/dsh-fork-worktreeREADME
dsh-fork-worktree
给 dsh 侧边栏的工作区行加两个按钮(位于 … 和 + 之间):
- fork:基于该工作区的 git 仓库新建 worktree,注册为新工作区并在其中打开会话。
- 垃圾桶:删除该工作区的 worktree,并移除工作区登记。
两个操作都必须先在弹窗中确认,点击按钮本身不会直接动手。
安装
在侧栏的插件面板里点添加插件,填入 github:Bainianzzz/dsh-fork-worktree,安装完成后点立即启用。
安装并启用后 hover 工作区行即可看到按钮。
更多安装方式请查看 Release 页
用法
fork
- 点击 fork,只弹出确认框。面板里列出两种创建方式,底部三个按钮:「取消|创建 git worktree|复制并创建 worktree」:
- 创建 git worktree:只检出已提交的内容;未提交的修改、未跟踪文件、被
.gitignore忽略的内容都留在源目录。 - 复制并创建 worktree:检出后把 worktree 缺失的文件复制进去,包括未跟踪文件与被忽略的内容(
node_modules、.env、构建产物、配置文件等)。已跟踪的文件保留 HEAD 版本,相对软链按原样保留。
- 创建 git worktree:只检出已提交的内容;未提交的修改、未跟踪文件、被
- 点任一创建按钮后:
- 目录是 git 仓库 → 在仓库同级创建
<仓库名>-wt-<label>,分支为wt/<label>,基于当前 HEAD;复制方式下补齐缺失文件;并注册为新工作区。 - 目录不是 git 仓库 → 弹窗切换为“初始化”模式(保留已选方式);再次确认后执行
git init,把目录当前内容提交为首个提交(空目录则空提交),再创建 worktree。
- 目录是 git 仓库 → 在仓库同级创建
- 成功后在新工作区打开会话,并用 toast 显示路径;复制方式下附带复制了多少项。
复制失败时,刚创建的 worktree 与分支一并撤销。
也可在该工作区的会话里执行:
/fork-worktree [name] [--init] [--copy]
省略 name 时使用 6 位随机 hex 作为 label;--copy 对应上面的“复制并创建 worktree”。
删除
- 点击垃圾桶,确认框会写明将删除的确切路径,并说明会话记录会保留。
- 确认后通过
git worktree remove删除该 worktree,仓库的 worktree 元数据一并清理,并移除工作区登记。 - 有未提交修改或未跟踪文件时拒绝删除,弹窗切换为“强制删除”模式,再次确认才执行。
- 护栏:拒绝删除
$HOME和文件系统根目录。
删除刻意没有命令入口,避免一条命令误删当前会话正在使用的目录。
自动清理
worktree 目录被外部删除后,对应的工作区登记会自动移除;普通目录和不符合命名规则的目录不受影响。
Похожие плагины
dsh-web (dsh-git-graph)
zhu1090093659/dsh-web
dsh-web-ui (dsh-git-graph)
zhu1090093659/dsh-web-ui
codex-guard (dsh)
akimiya-z/codex-guard
dsh-file-review
left0ver/dsh-file-review