{"id":44164373,"url":"https://github.com/guoyongchang/worktree-manager","last_synced_at":"2026-04-22T04:06:22.898Z","repository":{"id":337374219,"uuid":"1150379907","full_name":"guoyongchang/worktree-manager","owner":"guoyongchang","description":"Multi repository worktree manager","archived":false,"fork":false,"pushed_at":"2026-04-19T08:40:39.000Z","size":14107,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-19T10:04:43.791Z","etag":null,"topics":["branch","git","harness","multi-repo-app","repo","worktree"],"latest_commit_sha":null,"homepage":"https://guoyongchang.github.io/worktree-manager/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guoyongchang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-05T07:56:57.000Z","updated_at":"2026-04-19T08:40:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba08a652-0c7b-4a75-a0f1-5a1fdc80b409","html_url":"https://github.com/guoyongchang/worktree-manager","commit_stats":null,"previous_names":["guoyongchang/worktree-manager"],"tags_count":161,"template":false,"template_full_name":null,"purl":"pkg:github/guoyongchang/worktree-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guoyongchang","download_url":"https://codeload.github.com/guoyongchang/worktree-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guoyongchang%2Fworktree-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32120408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T00:31:26.853Z","status":"online","status_checked_at":"2026-04-22T02:00:05.693Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["branch","git","harness","multi-repo-app","repo","worktree"],"created_at":"2026-02-09T09:00:37.964Z","updated_at":"2026-04-22T04:06:22.881Z","avatar_url":"https://github.com/guoyongchang.png","language":"TypeScript","readme":"# Git Worktree Manager\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"src-tauri/icons/app-icon.svg\" width=\"128\" height=\"128\" alt=\"Worktree Manager\"\u003e\n\n**一个优雅的 Git Worktree 可视化管理工具**\n\n让多分支并行开发变得简单高效\n\n\u003c/div\u003e\n\n---\n\n## 为什么需要这个工具？\n\n\u003e **场景一：线上着火，但你手里的活还没提交**\n\u003e\n\u003e 你正在 `feature/checkout-v2` 上重构结算流程，改了十几个文件，`npm run dev` 跑着热更新。这时候 Slack 弹出告警：线上支付回调 500 了。你得马上修。\n\u003e\n\u003e 传统做法：`git stash` → 切到 `hotfix` → `npm install`（依赖版本不一样，得重装）→ 修完推上去 → 切回来 → `git stash pop` → 祈祷没冲突 → 重启 dev server 等构建缓存重建。整个流程 15 分钟起步，而线上还在报错。\n\u003e\n\u003e **用 Worktree Manager**：新建一个 `hotfix-payment` worktree，`node_modules` 自动通过 symlink 共享，秒级就绪。你的 `feature/checkout-v2` dev server 还在跑，改到一半的代码一行不用动。修完线上问题，归档 hotfix worktree，整个过程不超过 30 秒切换成本。\n\n\u003e **场景二：前后端联调，分支对不上就炸**\n\u003e\n\u003e 你的项目是前后端分仓：`web` 和 `api`。做「会员体系」需求时，两个仓库都要切到 `feature/membership` 分支。但同事让你帮忙看一个 `feature/search` 的问题，你切了前端分支忘了切后端——页面白屏，接口 404，排查半天才发现是分支没对齐。\n\u003e\n\u003e **用 Worktree Manager**：一个 worktree 绑定多个项目仓库。创建 `membership` worktree 时，`web` 和 `api` 同时检出到对应分支。切换 worktree 就是切换整套工作环境，不存在「只切了一半」的问题。\n\n\u003e **场景三：提测合并全靠命令行肌肉记忆**\n\u003e\n\u003e 需求开发完了，要合并到 `test` 分支给 QA 验证。你每次都得：`git checkout test` → `git pull` → `git merge feature/xxx` → 解决冲突 → `git push` → `git checkout feature/xxx` 切回来。一天提测三四个需求，这套操作重复到麻木，偶尔还会忘记切回来就在 `test` 分支上继续开发。\n\u003e\n\u003e **用 Worktree Manager**：每个项目卡片下方直接有「合并到 test」「同步 base」「推送」按钮，一键操作，不需要离开当前分支。分支状态（领先/落后几个 commit、是否已合并 test）实时显示，一目了然。\n\n\u003e **场景四：出差在外，想看一眼公司机器上的代码**\n\u003e\n\u003e 你的开发机在公司内网，出差时想看一下代码运行状态，或者在终端里执行几条命令。传统方案要么 SSH 隧道（折腾），要么 VPN + 远程桌面（卡顿）。\n\u003e\n\u003e **用 Worktree Manager**：开启内置分享功能，局域网或通过 ngrok 生成公网链接。在任意浏览器中打开，密码验证后即可查看工作区状态、使用内置终端，不需要安装任何客户端。\n\n**Git Worktree Manager** 基于 Git 原生的 [worktree](https://git-scm.com/docs/git-worktree) 能力构建，让你在**同一个仓库**中同时检出多个分支到**独立目录**，共享 `.git` 数据。配合自动 symlink `node_modules` 等大文件夹，**零成本切换**，**零额外磁盘占用**。\n\n## 核心功能\n\n### 多分支并行工作\n一个项目同时打开多个分支，互不干扰。不用 `stash`，不用 `clone` 多份。\n\n### 智能文件夹链接\n创建 worktree 时自动链接 `node_modules`、`.next`、`vendor` 等构建产物，避免重复安装依赖。支持自定义链接路径。\n\n### Workspace 全局文件共享\n`.claude`、`CLAUDE.md`、`requirement-docs` 等文件可以配置为全局链接，在所有 worktree 中共享。\n\n### 分支状态一目了然\n实时显示每个分支的提交数、未提交更改、是否合并到测试分支等信息。\n\n### 快速打开 IDE\n一键用 VS Code、Cursor 或 IntelliJ IDEA 打开任意 worktree。\n\n### 内置终端\n每个 worktree 有独立的终端会话，无需在多个窗口之间切换。\n\n### 安全归档\n完成开发后归档 worktree，归档前自动检查未提交和未推送的代码，防止丢失。\n\n## 快速开始\n\n### 直接下载（推荐）\n\n前往 [Releases](https://github.com/guoyongchang/worktree-manager/releases) 下载最新版本：\n\n- **macOS**：`.dmg` 安装包\n- **Windows**：`-setup.exe` 安装包\n- **Linux**：`.AppImage` 或 `.deb`\n\n运行仅需 **Git 2.0+**，无需安装 Node.js 或 Rust。\n\n\u003cdetails\u003e\n\u003csummary\u003e🛠️ 从源码构建（面向开发者）\u003c/summary\u003e\n\n**环境要求：** Node.js 20+、Rust 1.70+（[安装指南](https://rustup.rs)）、Git 2.0+\n\n```bash\n# 克隆项目\ngit clone https://github.com/guoyongchang/worktree-manager.git\ncd worktree-manager\n\n# 安装依赖\nnpm install\n\n# 开发模式运行\nnpm run tauri dev\n\n# 构建生产版本\nnpm run tauri build\n```\n\n**命令契约同步：**\n\n```bash\nnpm run verify:contracts\nnpm run docs:contracts\n```\n\n更多说明见 `docs/COMMAND_CONTRACTS.md`，生成结果位于 `docs/generated/command-contracts.md`。\n\n\u003c/details\u003e\n\n### 三步上手\n\n**1. 创建工作区** — 启动后导入你的项目目录，或新建一个 Workspace\n\n**2. 新建 Worktree** — 点击侧边栏的 \"+\" 按钮，输入分支名，选择项目，一键创建\n\n**3. 开始开发** — 在列表中切换 worktree，用你喜欢的 IDE 打开，各分支互不干扰\n\n## 添加项目\n\n主工作区中点击 \"添加项目\"，支持三种方式：\n\n| 方式 | 格式 | 示例 |\n|------|------|------|\n| GitHub 简写 | `owner/repo` | `facebook/react` |\n| SSH | `git@host:owner/repo.git` | `git@github.com:facebook/react.git` |\n| SSH (带端口) | `ssh://git@host:port/path.git` | `ssh://git@gitlab.com:1022/org/repo.git` |\n| HTTPS | `https://host/owner/repo.git` | `https://github.com/facebook/react.git` |\n\n添加时可以选择要链接的文件夹（如 `node_modules`、`.next`），也可以添加自定义路径。\n\n## 配置文件\n\n### 全局配置 `~/.config/worktree-manager/global.json`\n\n```json\n{\n  \"workspaces\": [\n    { \"name\": \"我的项目\", \"path\": \"/path/to/workspace\" }\n  ],\n  \"current_workspace\": \"/path/to/workspace\"\n}\n```\n\n### 工作区配置 `{workspace}/.worktree-manager.json`\n\n```json\n{\n  \"name\": \"我的项目\",\n  \"worktrees_dir\": \"worktrees\",\n  \"linked_workspace_items\": [\".claude\", \"CLAUDE.md\", \"requirement-docs\"],\n  \"projects\": [\n    {\n      \"name\": \"frontend\",\n      \"base_branch\": \"main\",\n      \"test_branch\": \"test\",\n      \"merge_strategy\": \"merge\",\n      \"linked_folders\": [\"node_modules\", \".next\"]\n    }\n  ]\n}\n```\n\n## 目录结构\n\n```\nworkspace/\n├── .worktree-manager.json    # 工作区配置\n├── projects/                 # 主仓库（main 分支）\n│   ├── frontend/\n│   └── backend/\n├── worktrees/                # Worktree 目录\n│   ├── feature-login/\n│   │   ├── projects/\n│   │   │   ├── frontend/     # git worktree（独立分支）\n│   │   │   └── backend/\n│   │   ├── .claude -\u003e ../../.claude  # 软链接\n│   │   └── CLAUDE.md -\u003e ../../CLAUDE.md\n│   └── hotfix-bug/\n│       └── ...\n├── .claude/\n└── CLAUDE.md\n```\n\n## 技术栈\n\n| 层级 | 技术 |\n|------|------|\n| 框架 | Tauri 2 |\n| 前端 | React 19 + TypeScript |\n| 样式 | Tailwind CSS 4 |\n| UI 组件 | Radix UI |\n| 构建 | Vite 7 |\n| 后端 | Rust |\n| 终端 | xterm.js + portable-pty |\n\n## 许可证\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoyongchang%2Fworktree-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguoyongchang%2Fworktree-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguoyongchang%2Fworktree-manager/lists"}