使用指南
从安装到精通,全面了解 Git Worktree Manager
目录
1 安装与启动
下载安装(推荐)
前往 GitHub Releases 页面下载适合你系统的安装包:
🔄 内置自动更新功能,安装后新版本会自动推送,无需手动下载。
macOS 安装说明
-
1
下载
.dmg文件,打开后将应用拖入 Applications 文件夹完成安装。 - 2 首次打开如提示"无法验证开发者",请右键点击 app,然后选择"打开"。
- 3 如仍无法打开,前往系统设置 → 隐私与安全性,在底部找到提示并点击"仍要打开"。
-
4
以上方法均无效时,打开终端执行:
xattr -cr "/Applications/Worktree Manager.app"
2 快速上手
1 创建工作区
启动应用后,首次使用需要创建或导入工作区:
- 新建工作区:选择一个空目录,应用会自动初始化
- 导入现有项目:选择包含 Git 项目的目录
2 添加项目
在工作区中添加 Git 项目,支持三种方式:
| 方式 | 格式 | 示例 |
|---|---|---|
| GitHub 简写 | owner/repo |
facebook/react |
| SSH | git@host:owner/repo.git |
git@github.com:facebook/react.git |
| HTTPS | https://host/owner/repo.git |
https://github.com/facebook/react.git |
3 创建 Worktree
点击侧边栏的 + 按钮,按照向导创建:
- 输入分支名称(如
feature/login) - 选择基于哪个分支创建(默认
main) - 选择要包含的项目
- 配置需要链接的文件夹(如
node_modules) - 点击"创建",等待完成
4 开始开发
在 Worktree 列表中:
- 点击打开 IDE:用 VS Code / Cursor / IDEA 打开
- 点击终端:在内置终端中运行命令
- 点击文件夹图标:在文件管理器中打开
3 工作区管理
目录结构
workspace/
├── .worktree-manager.json # 工作区配置
├── projects/ # 主仓库目录
│ ├── frontend/ # Git 项目 (main 分支)
│ └── backend/
├── worktrees/ # Worktree 目录
│ ├── feature-login/
│ │ ├── projects/
│ │ │ ├── frontend/ # 独立分支的工作目录
│ │ │ └── backend/
│ │ ├── .claude → ../../.claude # 软链接
│ │ └── CLAUDE.md → ../../CLAUDE.md
│ └── hotfix-bug/
│ └── ...
├── .claude/ # 全局共享文件
└── CLAUDE.md
全局文件共享
在工作区配置中设置 linked_workspace_items,这些文件/文件夹会自动链接到所有 Worktree:
{
"linked_workspace_items": [
".claude",
"CLAUDE.md",
"requirement-docs"
]
}
适用于 AI 辅助开发配置、需求文档等跨分支共享的资源。
4 Worktree 操作
🔄 切换分支
在列表中点击不同的 Worktree 即可切换,无需 git checkout
📊 状态监控
实时显示提交数、未提交更改、是否合并到测试分支
🗑️ 归档 Worktree
完成开发后可归档,会先检查未提交/未推送的代码,避免丢失
♻️ 恢复归档
从归档列表中一键恢复之前的 Worktree
5 多窗口与工作区切换
多窗口工作模式
每个 Workspace 可以在独立的窗口中打开,让你同时操作多个工作区,互不干扰。
- 在侧边栏的 Workspace 列表中,点击 Workspace 名称旁边的外部链接图标(↗️),即可在新窗口中打开该工作区
- 每个窗口独立运行,可以同时查看和操作不同的 Workspace
- 主窗口关闭时,子窗口也会随之关闭
窗口标题
窗口标题会动态显示当前的工作区和分支信息,格式为:
这样在多窗口场景下,你可以通过窗口标题快速区分不同的工作区。
Worktree 锁定机制
当一个 Worktree 已经在某个窗口中打开时,在其他窗口中该 Worktree 会显示为"已占用"状态。
- 已占用的 Worktree 不能在另一个窗口中同时操作,避免冲突
- 切换到其他 Worktree 时,当前 Worktree 的锁会自动释放
- 关闭窗口时,该窗口持有的所有锁也会自动释放
6 终端功能
内置终端
每个 Worktree 都有独立的内置终端,工作目录自动设置为 Worktree 的根目录。无需手动 cd 到对应路径。
- 终端面板位于应用底部,可以通过拖拽调整高度
- 切换 Worktree 时,终端会自动切换到对应的会话
- 终端会话在 Worktree 生命周期内保持,不会因为切换而丢失
多标签页
每个 Worktree 可以拥有多个终端标签页:
- 点击终端面板的
+按钮创建新的终端标签页 - 点击标签页切换不同的终端会话
- 点击标签页上的
x按钮关闭终端 - 每个标签页都是独立的终端进程
全屏模式
终端支持全屏模式,适合需要更大终端空间的场景:
- 点击终端面板右上角的最大化图标进入全屏模式
- 按 Escape 键退出全屏模式
- 全屏模式下终端会占满整个应用窗口
外部终端
如果你更习惯使用系统自带的终端应用,可以点击终端面板的"在外部终端中打开"按钮,它会自动打开系统默认终端并切换到 Worktree 目录。
7 语音输入
功能说明
语音输入功能基于阿里云 Dashscope Paraformer 实时语音识别,允许你对着麦克风说话,语音实时转写为文字并注入到当前终端中。适合双手不方便打字或需要快速输入命令的场景。
支持两种操作方式:
- 按住说话:按住 Alt+V 说话,松开即停止录音并转写
- 点击切换:点击终端面板的麦克风图标进入待命状态,之后按住 Alt+V 说话
配置 Dashscope
使用语音输入前,需要先配置 Dashscope API Key:
- 打开设置页面(齿轮图标)
- 滚动到"语音识别 (Dashscope)"区域
- 前往 Dashscope 控制台 获取 API Key
- 将 API Key 粘贴到输入框中,点击"保存"
- 点击"测试连接"按钮验证配置是否正确
Dashscope Paraformer 支持中英混合识别,识别速度快、准确率高,所有桌面平台(macOS / Windows / Linux)均可使用。
麦克风设置
在设置页的语音识别区域,可以管理麦克风设备:
- 选择麦克风:下拉框列出所有可用的音频输入设备,可选择特定麦克风(如外接麦克风、耳机麦克风等),默认使用系统默认设备
- 麦克风测试:点击"测试"按钮,会显示实时音量条,对着麦克风说话可确认设备是否正常工作。测试 10 秒后自动停止
- 连接测试:点击"测试连接"按钮,验证 API Key 和 WebSocket 地址是否配置正确,成功时显示绿色"连接成功"提示
💡 提示:首次使用时系统会弹出麦克风权限请求,请点击"允许"。如果不小心拒绝了,macOS 用户前往系统设置 → 隐私与安全性 → 麦克风手动开启。
使用流程
- 点击终端面板右上角的麦克风图标,进入待命状态(图标变为蓝色,麦克风已打开)
- 按住 Alt+V 开始说话,此时连接 Dashscope 并实时发送音频
- 松开 Alt+V,停止录音,识别结果自动输入到终端
- 可以反复按住/松开进行多次语音输入,麦克风始终保持待命
- 再次点击麦克风图标,退出待命状态并释放麦克风
空闲 → [点击麦克风] → 待命 → [按住 Alt+V] → 录音中 → [松开] → 待命
语音命令
除了普通文字转写外,还支持以下语音命令关键词,说出即可触发对应终端操作:
| 语音关键词 | 终端操作 |
|---|---|
提交 / 回车 / enter / submit |
按下回车 (Enter) |
删除 / backspace / delete |
删除前一个字符 (Backspace) |
清空 / clear |
中断当前输入 (Ctrl+C) |
中断 / escape |
发送 ESC 键 |
例如:按住 Alt+V 说 git status,松开后再按住说 回车,等同于在终端中输入 git status 并按回车执行。
AI 语音精炼
语音转写的结果往往包含口语化的填充词("嗯"、"那个"、"就是说"等)和语法错误。AI 语音精炼功能集成了 Qwen 大语言模型,自动优化转写文本:
- 去除填充词:自动识别并移除"嗯"、"啊"、"那个"等无意义词汇
- 语法修正:修正口语化表达为规范的命令格式
- 语义保持:优化过程保持原始意图不变,不会改变命令含义
原始转写: 嗯 那个 git status 就是看一下
精炼结果: git status
💡 配置:在设置页面的语音识别区域,配置 Qwen API Key(使用 Dashscope 平台)即可启用 AI 精炼功能。精炼功能可单独开关。
移动端语音输入
在浏览器远程模式下(手机/平板访问),终端面板提供专门的按住说话按钮:
- 长按说话:在终端底部长按麦克风按钮开始录音,松开即停止
- 触屏优化:按钮尺寸和交互针对触摸屏优化,单手即可操作
- 同样支持 AI 精炼:移动端的语音输入同样经过 AI 精炼处理
8 IDE 集成
支持的 IDE
Worktree Manager 支持多种主流 IDE 和编辑器:
切换默认 IDE
在 Worktree 详情页中,点击 IDE 按钮旁边的下拉箭头,即可看到 IDE 选择列表:
- 选择一个 IDE 后,它会成为当前项目的默认 IDE
- 下次点击 IDE 按钮时,会直接使用上次选择的 IDE 打开
- 不同项目可以设置不同的默认 IDE
快速打开
在 IDE 下拉菜单中,每个 IDE 选项右侧都有一个快速打开图标(↗️):
- 点击图标可以直接用该 IDE 打开项目,而不会改变默认 IDE 设置
- 适合偶尔用其他 IDE 打开的场景
在文件夹中打开
IDE 下拉菜单底部还有"在文件夹中打开"选项,点击后会在系统文件管理器(Finder / 文件资源管理器)中打开 Worktree 的项目目录。
9 智能文件夹扫描
功能说明
智能文件夹扫描可以自动检测项目中适合被链接的大文件夹,帮助你快速配置 linked_folders。
链接这些文件夹后,新创建的 Worktree 会自动从主仓库创建软链接,无需重复安装依赖或重新构建,节省大量磁盘空间和时间。
如何使用
- 进入工作区设置页面
- 找到项目的 Linked Folders 配置项
- 点击扫描按钮(放大镜图标)
- 系统会自动扫描项目目录,列出所有可链接的文件夹
- 勾选你需要链接的文件夹,点击确认
自动检测的文件夹类型
扫描功能会自动识别以下常见的大文件夹:
| 文件夹 | 用途 |
|---|---|
node_modules |
Node.js 依赖 |
.next |
Next.js 构建产物 |
dist |
通用构建输出 |
build |
构建输出 |
vendor |
PHP / Go 依赖 |
.output |
Nuxt 3 构建输出 |
.nuxt |
Nuxt.js 构建产物 |
target |
Rust / Java 构建输出 |
10 远程分享与协作
功能概述
远程分享功能允许你将当前工作区通过浏览器分享给同事,对方无需安装任何软件,只需打开链接即可查看你的 Worktree、使用终端,甚至进行协作开发。
适用场景:
- 结对编程 -- 远程同事通过浏览器加入你的终端,实时协作
- 代码演示 -- 让 PM 或测试人员在浏览器中查看你的分支状态
- 远程协助 -- 帮同事排查问题,直接在他分享的终端里操作
- 移动办公 -- 在平板或手机浏览器上临时查看工作区状态
分享功能支持三种模式:局域网直连(同一 Wi-Fi / 内网)、WMS 内置隧道(无需安装额外工具)和ngrok 穿透(使用 ngrok 服务)。
开启分享
在桌面端应用中,按照以下步骤开启分享:
- 在侧边栏底部找到"分享"按钮,点击打开分享面板
- 设置端口号(默认推荐 49152-65535 范围,也支持 3000-9999 开发端口)
- 设置访问密码(必填,用于保护你的工作区)
- 点击"开启分享",系统会启动一个内置 HTTP 服务器
- 分享成功后会显示一个局域网访问地址(如
http://192.168.1.100:49152)
局域网地址: http://192.168.1.100:49152
# 将此地址和密码发给同事即可
浏览器模式访问
协作者打开分享链接后:
- 浏览器会显示一个密码输入页面,输入你设置的密码即可进入
- 进入后看到与桌面端相同的界面,包括 Worktree 列表、分支状态等
- 可以使用内置终端(通过 WebSocket 实时传输)
- 可以加入协作,与桌面端用户共享终端会话
- 所有操作通过 WebSocket 实时同步,延迟极低
⚠️ 注意:浏览器端的终端操作会直接影响你本机的文件,请确保只分享给信任的人。
ngrok 外网穿透
如果协作者不在同一局域网,可以使用 ngrok 进行外网穿透,通过公网 URL 访问:
第一步:安装 ngrok 并获取 Token
- 前往 ngrok.com 注册账号(免费)
- 在 ngrok Dashboard 复制你的 Authtoken
第二步:在应用中配置 Token
- 打开设置页面(齿轮图标)
- 滚动到底部找到 "外网分享 (ngrok)" 区域
- 将 Authtoken 粘贴到输入框中,点击"保存"
第三步:启用外网隧道
- 先按上述步骤开启局域网分享
- 在分享面板中点击"开启外网"按钮
- 等待 ngrok 隧道建立成功(通常几秒内完成)
- 生成的公网地址(如
https://xxxx.ngrok-free.app)即可分享给任何人
外网地址: https://a1b2c3d4.ngrok-free.app
# 任何能上网的人都可以通过此地址访问
WMS 内置隧道
除了 ngrok,Worktree Manager 还内置了 WMS 隧道服务,无需安装任何额外工具即可实现公网访问:
- 先按上述步骤开启局域网分享
- 在分享面板中点击"WMS 隧道"按钮
- 系统会自动连接
tunnel.kirov-opensource.com并分配唯一子域名 - 生成的公网地址(如
https://your-name.tunnel.kirov-opensource.com)即可分享给任何人
优势:无需注册第三方账号,无需安装额外软件。支持断线自动重连,连接断开时会显示重试倒计时。
QR 码分享
开启分享后,分享面板会自动生成当前分享地址的二维码:
- 扫码访问:用手机/平板扫描二维码,直接在移动浏览器中打开工作区
- 密码内嵌:二维码链接中可以内嵌访问密码(通过 URL fragment),扫码后自动完成认证,无需手动输入密码
- 多种模式:局域网、WMS 隧道和 ngrok 三种模式均支持 QR 码
客户端管理
在分享面板中可以实时查看和管理所有连接的客户端:
- 连接列表:显示所有已连接的浏览器客户端,包括 IP 地址、连接时间等信息
- 踢出会话:可以单独踢出指定的客户端会话,被踢出的用户需要重新输入密码
- 密码更新:修改密码后,所有已连接的客户端会被自动踢出
安全注意事项
密码保护
所有分享都必须设置密码,浏览器端必须先认证才能访问 API
防暴力破解
内置速率限制机制,同一 IP 每 60 秒最多尝试 5 次认证
会话隔离
每个浏览器端获得独立的 session ID,服务端生成,无法伪造
CORS 限制
仅允许来自 localhost、局域网 IP 和当前 ngrok URL 的跨域请求
随时可控
分享者可随时修改密码(自动踢出所有已连接用户)、关闭外网隧道或完全停止分享
⚠️ 重要提醒:分享功能会暴露你的工作区文件和终端。请使用强密码,且仅分享给你信任的人。使用 ngrok 外网模式时请格外注意,因为任何知道链接和密码的人都可以访问。不使用时请及时关闭分享。
分享问题排查
局域网分享后同事无法访问?
- 确认双方在同一局域网 / Wi-Fi 下
- 检查防火墙是否放行了对应端口(macOS 可能会弹出防火墙提示,点击"允许")
- 尝试用
curl http://你的IP:端口/api/get_share_info测试连通性 - 如果用的是公司 VPN,有可能网络隔离,建议使用 ngrok 外网模式
ngrok 隧道启动失败?
- 检查 ngrok token 是否正确配置(设置页面底部)
- 确认网络能访问外网(ngrok 需要连接其服务器)
- 免费版 ngrok 有同时隧道数限制,确保没有其他隧道在运行
- 如果超时,重试一次,ngrok 偶尔会连接较慢
浏览器端终端无响应?
- 检查 WebSocket 连接状态(浏览器开发者工具 → Network → WS)
- 如果使用 ngrok,确认 ngrok 隧道仍在运行
- 尝试刷新页面重新连接
端口被占用怎么办?
更换一个端口号即可。推荐使用 49152-65535 范围内的端口,这些是动态/私有端口,不太可能被其他程序占用。
# 查看端口占用情况(macOS/Linux)
lsof -i :49152
11 配置详解
全局配置
位置:~/.config/worktree-manager/global.json
{
"workspaces": [
{ "name": "我的项目", "path": "/path/to/workspace" }
],
"current_workspace": "/path/to/workspace",
"ngrok_token": "2abc...xyz",
"last_share_port": 49152
}
ngrok_token: 可选,ngrok Authtoken,用于外网穿透分享
last_share_port: 可选,上次使用的分享端口号,下次分享时自动填入
工作区配置
位置:{workspace}/.worktree-manager.json
{
"name": "我的项目",
"worktrees_dir": "worktrees",
"linked_workspace_items": [".claude", "CLAUDE.md"],
"projects": [
{
"name": "frontend",
"base_branch": "main",
"test_branch": "test",
"merge_strategy": "merge",
"linked_folders": ["node_modules", ".next"]
}
]
}
worktrees_dir: Worktree 存放目录
linked_workspace_items: 全局共享文件
linked_folders: 项目级文件夹链接
merge_strategy: 合并策略 (merge 或 rebase)
12 快捷键
| 快捷键 | 功能 | 适用场景 |
|---|---|---|
| Escape | 退出终端全屏 | 终端全屏模式下 |
| Escape | 关闭下拉菜单 / 弹窗 | 任意菜单或弹窗打开时 |
| Alt+V(按住) | 按住说话,松开停止录音 | 麦克风待命状态下 |
| 右键点击 | 打开 Worktree 上下文菜单 | 在 Worktree 列表项上 |
13 最佳实践
✅ 推荐做法
- • 为每个需求/功能创建独立的 Worktree
- • 使用统一的分支命名规范(如
feature/xxx、hotfix/xxx) - • 定期归档已合并的 Worktree,保持列表整洁
- • 将常用的依赖目录加入
linked_folders - • 使用内置终端,避免路径混淆
⚠️ 避免做法
- • 不要手动删除 Worktree 目录,请使用归档功能
- • 不要在多个 Worktree 中同时修改同一个文件(链接的文件除外)
- • 不要链接会产生冲突的文件(如
.env) - • 避免创建过多 Worktree(建议不超过 10 个)
14 常见问题
Q: macOS 提示"已损坏"或"无法验证开发者"怎么办?
这是因为应用未经 Apple 公证签名,macOS 的安全机制会阻止打开。请按以下步骤操作:
- 右键点击应用图标,选择"打开"(而不是双击)
- 如果仍然无法打开,前往系统设置 → 隐私与安全性,在页面底部找到被阻止的提示,点击"仍要打开"
- 如果以上方法都不行,打开终端,执行以下命令:
xattr -cr "/Applications/Worktree Manager.app"
执行后重新打开应用即可。此命令会移除文件的隔离属性。
Q: 创建 Worktree 失败怎么办?
可能原因:
- 分支名已存在
- Git 仓库有未提交的更改
- 磁盘空间不足
解决方案:检查错误提示,确保主仓库状态干净,或手动运行 git worktree add 查看详细错误。
Q: 软链接失效/找不到文件?
检查 linked_folders 配置是否正确,确保主仓库中对应的文件夹存在。在终端中运行:
ls -la worktrees/your-worktree/
查看链接是否正常。如果链接损坏,可以删除后重新创建 Worktree。
Q: 如何在新窗口打开工作区?
在侧边栏的 Workspace 列表中,将鼠标悬停在 Workspace 名称上,右侧会出现一个外部链接图标(↗️)。
点击该图标,即可在新窗口中打开对应的工作区。新窗口是独立的,不会影响主窗口的操作。
Q: 终端如何全屏?
点击终端面板右上角的最大化图标即可进入全屏模式。
按 Escape 键退出全屏模式,恢复到正常布局。
Q: 链接的文件夹有哪些推荐?
以下是常见的推荐链接文件夹列表,按项目类型选择:
node_modules-- Node.js / 前端项目依赖.next-- Next.js 构建缓存dist-- 通用构建输出目录build-- React / 其他框架构建输出vendor-- PHP Composer / Go 依赖.output-- Nuxt 3 构建输出.nuxt-- Nuxt.js 构建缓存target-- Rust Cargo / Java Maven 构建输出
💡 提示:也可以使用智能文件夹扫描功能自动检测,详见第 9 节。
Q: 如何在多台电脑间同步工作区?
工作区配置存储在 .worktree-manager.json,可以加入版本控制:
git add .worktree-manager.json
git commit -m "Add worktree config"
git push
在其他电脑上 pull 后,工作区会自动识别配置。
Q: 归档的 Worktree 可以恢复吗?
可以!在归档列表中找到对应的 Worktree,点击"恢复"即可。注意恢复后分支状态可能与归档时不同(如果远程有更新)。
Q: 支持哪些操作系统?
目前支持:
- ✅ macOS (Intel + Apple Silicon)
- ✅ Linux (Ubuntu, Debian, Arch 等)
- ⚠️ Windows (实验性支持,软链接需要管理员权限)