efim0v /
grove
Grove 是一个 macOS 菜单栏应用加命令行工具,面向拆分在多个 Git 仓库里的项目(比如客户端、服务端、配置各在一个仓库)。它为每个功能建一个“工作区”:一个目录里放着你选的各个仓库的 git worktree,都在同一个分支上。Claude Code 从这个目录启动,看到的是这几个仓库的同一个分支;同时开好几个会话,也不会互相把分支切走。它还能集中查看各项目、各账号的 Claude Code 会话,并把会话转到另一个 Cla…
efim0v /
Grove 是一个 macOS 菜单栏应用加命令行工具,面向拆分在多个 Git 仓库里的项目(比如客户端、服务端、配置各在一个仓库)。它为每个功能建一个“工作区”:一个目录里放着你选的各个仓库的 git worktree,都在同一个分支上。Claude Code 从这个目录启动,看到的是这几个仓库的同一个分支;同时开好几个会话,也不会互相把分支切走。它还能集中查看各项目、各账号的 Claude Code 会话,并把会话转到另一个 Cla…
Grove 是一个 macOS 菜单栏应用加命令行工具,面向拆分在多个 Git 仓库里的项目(比如客户端、服务端、配置各在一个仓库)。它为每个功能建一个“工作区”:一个目录里放着你选的各个仓库的 git worktree,都在同一个分支上。Claude Code 从这个目录启动,看到的是这几个仓库的同一个分支;同时开好几个会话,也不会互相把分支切走。它还能集中查看各项目、各账号的 Claude Code 会话,并把会话转到另一个 Claude 账号继续。 亮点 一个分支贯穿多个仓库:建工作区时,Grove 在你选的每个仓库里执行 git worktree add,分支名按模板生成(默认 feat/{name}),你指定的共享文件(比如 CLAUDE.md)会链接或复制进新工作区,各仓库还可以运行自己的创建后钩子。每个仓库可以从各自的基础分支开始;新工作区也能基于另一个工作区的分支来建,Grove 直接从 git 推导出它们之间的关系。 和 Claude Code 自带的 --worktree 不同:claude --worktree 只在当前这一个仓库里建 worktree,Grove 把多个仓库的 worktree 放在同一个目录、同一个分支上。如果产品只有一个仓库,Claude Code 自带的功能可能就够用了。 会话集中查看,还能换账号:列出各个项目、各个 Claude 账号下的 Claude Code 会话。一个账号的限额用完时,可以把会话交给另一个账号:Resume as… 用另一个账号直接接着跑,什么都不用复制;Migrate to… 把会话记录、记忆、文件历史和任务完整复制过去;Share 把会话放进共享存储,所有关联的账号都能看到。 另外还有提交图(分支、远程、标签)和代码行数统计;命令行工具 grove 提供 scan、workspaces、sessions、create、graph、doctor 命令,都能输出 JSON。 可以当学习材料:怎样为多个仓库批量创建 git worktree,并确认它们都切到了同一个分支;菜单栏为什么用 NSStatusItem + NSPanel,而不用 SwiftUI 的 MenuBarExtra,也不用 NSPopover(GroveMenuBarApp.swift 的注释里写了原因)。 纯 Swift 编写(SwiftUI + AppKit),没有第三方依赖,有九百多个测试;免费,GPL-3.0 开源;仓库附有简体中文 README。
讨论这个产品