使用指南

从安装到精通,全面了解 Git Worktree Manager

1 安装与启动

下载安装(推荐)

前往 GitHub Releases 页面下载适合你系统的安装包:

✅ macOS (Intel + ARM) ✅ Windows ✅ Linux

🔄 内置自动更新功能,安装后新版本会自动推送,无需手动下载。

macOS 安装说明

  1. 1 下载 .dmg 文件,打开后将应用拖入 Applications 文件夹完成安装。
  2. 2 首次打开如提示"无法验证开发者",请右键点击 app,然后选择"打开"
  3. 3 如仍无法打开,前往系统设置 → 隐私与安全性,在底部找到提示并点击"仍要打开"
  4. 4 以上方法均无效时,打开终端执行:xattr -cr "/Applications/Worktree Manager.app"
🛠️ 从源码构建(面向开发者)

环境要求

构建步骤

# 1. 克隆项目
git clone https://github.com/guoyongchang/worktree-manager.git
cd worktree-manager

# 2. 安装依赖
npm install

# 3. 开发模式运行
npm run tauri dev

# 4. 构建生产版本(可选)
npm run tauri build

💡 提示:首次运行可能需要几分钟下载 Rust 依赖,请耐心等待。

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

点击侧边栏的 + 按钮,按照向导创建:

  1. 输入分支名称(如 feature/login
  2. 选择基于哪个分支创建(默认 main
  3. 选择要包含的项目
  4. 配置需要链接的文件夹(如 node_modules
  5. 点击"创建",等待完成

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
  • 主窗口关闭时,子窗口也会随之关闭

窗口标题

窗口标题会动态显示当前的工作区和分支信息,格式为:

{WorkspaceName} - {WorktreeName}

这样在多窗口场景下,你可以通过窗口标题快速区分不同的工作区。

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:

  1. 打开设置页面(齿轮图标)
  2. 滚动到"语音识别 (Dashscope)"区域
  3. 前往 Dashscope 控制台 获取 API Key
  4. 将 API Key 粘贴到输入框中,点击"保存"
  5. 点击"测试连接"按钮验证配置是否正确

Dashscope Paraformer 支持中英混合识别,识别速度快、准确率高,所有桌面平台(macOS / Windows / Linux)均可使用。

麦克风设置

在设置页的语音识别区域,可以管理麦克风设备:

  • 选择麦克风:下拉框列出所有可用的音频输入设备,可选择特定麦克风(如外接麦克风、耳机麦克风等),默认使用系统默认设备
  • 麦克风测试:点击"测试"按钮,会显示实时音量条,对着麦克风说话可确认设备是否正常工作。测试 10 秒后自动停止
  • 连接测试:点击"测试连接"按钮,验证 API Key 和 WebSocket 地址是否配置正确,成功时显示绿色"连接成功"提示

💡 提示:首次使用时系统会弹出麦克风权限请求,请点击"允许"。如果不小心拒绝了,macOS 用户前往系统设置 → 隐私与安全性 → 麦克风手动开启。

使用流程

  1. 点击终端面板右上角的麦克风图标,进入待命状态(图标变为蓝色,麦克风已打开)
  2. 按住 Alt+V 开始说话,此时连接 Dashscope 并实时发送音频
  3. 松开 Alt+V,停止录音,识别结果自动输入到终端
  4. 可以反复按住/松开进行多次语音输入,麦克风始终保持待命
  5. 再次点击麦克风图标,退出待命状态并释放麦克风
# 状态流转
空闲 [点击麦克风] 待命 [按住 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 和编辑器:

VS Code code
Cursor cursor
IntelliJ IDEA idea
Zed zed
Sublime Text subl
Windsurf windsurf

切换默认 IDE

在 Worktree 详情页中,点击 IDE 按钮旁边的下拉箭头,即可看到 IDE 选择列表:

  • 选择一个 IDE 后,它会成为当前项目的默认 IDE
  • 下次点击 IDE 按钮时,会直接使用上次选择的 IDE 打开
  • 不同项目可以设置不同的默认 IDE

快速打开

在 IDE 下拉菜单中,每个 IDE 选项右侧都有一个快速打开图标(↗️):

  • 点击图标可以直接用该 IDE 打开项目,而不会改变默认 IDE 设置
  • 适合偶尔用其他 IDE 打开的场景

在文件夹中打开

IDE 下拉菜单底部还有"在文件夹中打开"选项,点击后会在系统文件管理器(Finder / 文件资源管理器)中打开 Worktree 的项目目录。

9 智能文件夹扫描

功能说明

智能文件夹扫描可以自动检测项目中适合被链接的大文件夹,帮助你快速配置 linked_folders

链接这些文件夹后,新创建的 Worktree 会自动从主仓库创建软链接,无需重复安装依赖或重新构建,节省大量磁盘空间和时间。

如何使用

  1. 进入工作区设置页面
  2. 找到项目的 Linked Folders 配置项
  3. 点击扫描按钮(放大镜图标)
  4. 系统会自动扫描项目目录,列出所有可链接的文件夹
  5. 勾选你需要链接的文件夹,点击确认

自动检测的文件夹类型

扫描功能会自动识别以下常见的大文件夹:

文件夹 用途
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 服务)。

开启分享

在桌面端应用中,按照以下步骤开启分享:

  1. 在侧边栏底部找到"分享"按钮,点击打开分享面板
  2. 设置端口号(默认推荐 49152-65535 范围,也支持 3000-9999 开发端口)
  3. 设置访问密码(必填,用于保护你的工作区)
  4. 点击"开启分享",系统会启动一个内置 HTTP 服务器
  5. 分享成功后会显示一个局域网访问地址(如 http://192.168.1.100:49152
# 分享成功后显示的地址示例
局域网地址: http://192.168.1.100:49152
# 将此地址和密码发给同事即可

浏览器模式访问

协作者打开分享链接后:

  1. 浏览器会显示一个密码输入页面,输入你设置的密码即可进入
  2. 进入后看到与桌面端相同的界面,包括 Worktree 列表、分支状态等
  3. 可以使用内置终端(通过 WebSocket 实时传输)
  4. 可以加入协作,与桌面端用户共享终端会话
  5. 所有操作通过 WebSocket 实时同步,延迟极低

⚠️ 注意:浏览器端的终端操作会直接影响你本机的文件,请确保只分享给信任的人。

ngrok 外网穿透

如果协作者不在同一局域网,可以使用 ngrok 进行外网穿透,通过公网 URL 访问:

第一步:安装 ngrok 并获取 Token

  1. 前往 ngrok.com 注册账号(免费)
  2. ngrok Dashboard 复制你的 Authtoken

第二步:在应用中配置 Token

  1. 打开设置页面(齿轮图标)
  2. 滚动到底部找到 "外网分享 (ngrok)" 区域
  3. 将 Authtoken 粘贴到输入框中,点击"保存"

第三步:启用外网隧道

  1. 先按上述步骤开启局域网分享
  2. 在分享面板中点击"开启外网"按钮
  3. 等待 ngrok 隧道建立成功(通常几秒内完成)
  4. 生成的公网地址(如 https://xxxx.ngrok-free.app)即可分享给任何人
# ngrok 外网地址示例
外网地址: https://a1b2c3d4.ngrok-free.app
# 任何能上网的人都可以通过此地址访问

WMS 内置隧道

除了 ngrok,Worktree Manager 还内置了 WMS 隧道服务,无需安装任何额外工具即可实现公网访问:

  1. 先按上述步骤开启局域网分享
  2. 在分享面板中点击"WMS 隧道"按钮
  3. 系统会自动连接 tunnel.kirov-opensource.com 并分配唯一子域名
  4. 生成的公网地址(如 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: 合并策略 (mergerebase)

12 快捷键

快捷键 功能 适用场景
Escape 退出终端全屏 终端全屏模式下
Escape 关闭下拉菜单 / 弹窗 任意菜单或弹窗打开时
Alt+V(按住) 按住说话,松开停止录音 麦克风待命状态下
右键点击 打开 Worktree 上下文菜单 在 Worktree 列表项上

13 最佳实践

✅ 推荐做法

  • • 为每个需求/功能创建独立的 Worktree
  • • 使用统一的分支命名规范(如 feature/xxxhotfix/xxx
  • • 定期归档已合并的 Worktree,保持列表整洁
  • • 将常用的依赖目录加入 linked_folders
  • • 使用内置终端,避免路径混淆

⚠️ 避免做法

  • • 不要手动删除 Worktree 目录,请使用归档功能
  • • 不要在多个 Worktree 中同时修改同一个文件(链接的文件除外)
  • • 不要链接会产生冲突的文件(如 .env
  • • 避免创建过多 Worktree(建议不超过 10 个)

14 常见问题

Q: macOS 提示"已损坏"或"无法验证开发者"怎么办?

这是因为应用未经 Apple 公证签名,macOS 的安全机制会阻止打开。请按以下步骤操作:

  1. 右键点击应用图标,选择"打开"(而不是双击)
  2. 如果仍然无法打开,前往系统设置 → 隐私与安全性,在页面底部找到被阻止的提示,点击"仍要打开"
  3. 如果以上方法都不行,打开终端,执行以下命令:
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 (实验性支持,软链接需要管理员权限)

还有疑问?

欢迎在 GitHub 上提 Issue 或参与讨论