stash hell
Stash 切来切去
正在写 feature,突然要修一个紧急 bug。stash、切分支、改完再 stash pop——然后就是一片冲突。
git stash pop # 祈祷
一个 ccl 命令,搞定 worktree 的创建、进入、清理
顺手把 Claude Code / Codex 拉起来。每个任务一个独立工作区,互不打扰—— 不用 stash,不用切分支,不用记「我刚才在哪」。
npm install -g cc-launch? 选择操作:
❯ 新任务
继续已有任务
清理已合并的 worktree
↑↓ 选择 · ⏎ 确认 · 鼠标也能点
→ ~/.worktrees/payment-service/james-fix-login-timeout
传统 git 工作流在「一个人同时开三条战线」的时候,就开始漏水了。
stash hell
正在写 feature,突然要修一个紧急 bug。stash、切分支、改完再 stash pop——然后就是一片冲突。
git stash pop # 祈祷
tab soup
同时推进 3 个任务,每个都要开一个终端 tab、手动 cd 到对应目录。过 10 分钟就分不清哪个是哪个。
cd ../../that-other-one
ai friction
想让 Claude 帮忙,得先找目录、再进目录、再启动工具。上下文互相污染,改错分支是常事。
wait… 我在哪个分支?
没有子命令要背,没有参数要查。一个交互菜单,三件事。
the whole api
$ ccl
就这一个入口。首次运行会问一次主分支名,写进 config.json,之后不再打扰你。
new task
建 worktree、开 username/task-slug 分支、跑 setup.sh,然后直接把 claude 或 codex 拉起来。
resume
列出这个仓库所有 worktree,选一个直接切过去,工作环境原样还在,接着上次的地方写。
clean up
只删「已合并到主分支」且「工作区干净」的 worktree。双重检查,不会顺手带走你没提交的改动。
全程没有 stash,没有冲突,也没有「我刚才是哪个分支来着」。
scene 01 — 现场
你正在 payment-service 的 dev 分支上写报表功能,写到一半。
PM: 线上登录超时了,紧急修一下 🙏
scene 02 — 旧世界
↑ 这些今天都不用干了
scene 04 — 结果
修完 → 提 PR 到 main → 回到 ccl 删掉这个 worktree → 报表接着写。
dev 分支那边的改动,一个字都没动过。
? 选择操作:
❯ 新任务
继续已有任务
清理已合并的 worktree
? 基于分支 (main):
main
? 任务名称:
fix-login-timeout
✓创建 worktree ~/.worktrees/payment-service/james-fix-login-timeout
✓创建分支 james/fix-login-timeout
✓运行 setup.sh(如果仓库里有)
✓启动 Claude Code —— 光标已经在新目录里了
elapsed: 一次回车
navigate
↑↓ 移动,回车确认,鼠标滚轮和点击也认。
auto setup
新 worktree 建好后自动跑 setup.sh:装依赖、拷 .env,随你写。
first run
问一次主分支名,写进 config.json,之后不再问。
简单、安全、透明——三件事都不打折。
one line install
npm install -g cc-launch,Zsh / Bash 都支持,不用编译不用配环境。
never loses code
merged 检查 + 工作区干净检查,双保险;有未提交改动的 worktree 一律不删。
auditable
所有逻辑都在仓库里摊开,setup.sh 自己写,想改什么都改得动。
built for agents
worktree 天然隔离上下文。每个任务一个独立 Claude 会话,谁也别污染谁。
复制一行,回车,就装好了
one-liner — Zsh
npm install -g cc-launch && echo 'eval "$(command ccl init zsh)"' >> ~/.zshrc && source ~/.zshrcccl 需要一个 shell 函数才能真的把当前终端 cd 进 worktree,所以要往 ~/.zshrc 里加一行 init。
全局安装 cc-launch,拿到 ccl 命令。
npm install -g cc-launch往 ~/.zshrc 里加一行,让 ccl 能切目录。
eval "$(command ccl init zsh)"任意 git 仓库的任意子目录,敲 ccl。
ccl