从 Git Worktrees 端到端测试微服务更改,避免终端标签爆炸

发布: (2026年2月28日 GMT+8 18:45)
10 分钟阅读
原文: Dev.to

I’m happy to translate the article for you, but I’ll need the full text of the post (the parts you’d like translated). Could you please paste the article’s content here? Once I have it, I’ll provide a Simplified‑Chinese translation while preserving the source link, markdown formatting, and any code blocks or URLs unchanged.

TL;DR

我构建了一个名为 Recomposable 的可视化 CLI 工具,以解决在 Git 工作树中测试 Claude 生成的代码的痛点。

问题

在使用 Claude Code 与 Git worktree 时,通常会同时检出同一仓库的多个分支:

  • Claude 在一个 worktree 中工作。
  • 你在另一个 worktree 中审查/运行其余的堆栈。

这在单服务项目中还能正常运作,但在 微服务 架构下很快就会失效。

你需要验证 Claude 对 某个 服务所做的更改仍能与其余堆栈协同工作。这意味着:

  1. 仅从该 worktree 的代码 重新构建该服务
  2. 让所有其他服务保持在 main 分支上。

Docker Compose 并不认识 worktree——它只看到磁盘上的文件——因此你不得不手动处理大量路径切换。

手动工作流(当前状态)

StepWhat you do
1️⃣ Find the worktree pathClaude 在 .claude/worktrees/ 目录下创建带有自动生成名称的 worktree。
bash\ngit worktree list\n# /Users/you/project abc1234 [main]\n# /Users/you/project/.claude/worktrees/jan-abc123 def5678 [fix‑oauth]\n
2️⃣ Build the service from the worktree将 worktree 路径与 compose 文件路径组合,并指定要构建的服务。
bash\ndocker compose -f /Users/you/project/.claude/worktrees/jan-abc123/docker-compose.yml build auth-service\n
3️⃣ Start itbash\ndocker compose -f /Users/you/project/.claude/worktrees/jan-abc123/docker-compose.yml up -d auth-service\n
4️⃣ Verify打开另一个终端,实时查看日志,访问服务,若失败则可能需要重新构建。
5️⃣ Switch back重复步骤 2‑3,但指向原始的 compose 文件。

每一步都需要你记住或复制 worktree 路径,并且还必须跟踪哪个 compose 文件对应哪个服务。
没有 概览 能显示每个服务是从哪个分支运行的。

你可以通过 shell 别名或 Makefile 来减少一些繁琐,但仍然缺少:

  • 快速的可视化提示,显示哪个服务运行自哪个 worktree。
  • 当出现新 worktree 时的自动更新。

Source:

介绍 Recomposable (v1.1.4)

Recomposable 是为开发工作流打造的 Docker‑Compose TUI。
版本 1.1.4 将 worktree 切换 作为一等功能加入。

工作原理

  1. 在 UI 中对任意服务 t
  2. 选择器会显示 所有可用的 Git worktree(通过 git worktree list --porcelain 获取)。
  3. 使用 j/k 移动,Enter 选择。
  4. 该服务会 停止从所选 worktree 的 compose 文件重新构建,随后 重新启动

就这么简单——无需手动路径、无需额外的 docker compose -f … 参数、也不需要打开额外的终端标签页。

UI 概览

当服务来自不同分支时,会自动出现 WORKTREE 列。
main 分支会以黄色高亮显示。

SERVICE        STATUS   BUILT   PORTS   WORKTREE
auth-service   running  2m ago  5001    fix-oauth
api-gateway    running  1h ago  8080    main
web-app        running  3d ago  3000    main
  • 不必记住路径。
  • 不必猜测容器是基于哪个分支构建的。

实现细节

  • 发现 – 在 compose 文件所在目录执行 git worktree list --porcelain,以发现所有 worktree。
  • 映射 – 工具会把原始 compose 文件路径映射到目标 worktree 中的相同相对路径。如果目标 worktree 中不存在该文件或服务,会显示错误。
  • 覆盖存储 – 所选 worktree 的覆盖信息会按服务保存,因此 所有后续操作rebuildrestartlogsexecwatch、基于依赖的级联重建)都会自动使用覆盖后的 compose 文件。
  • 切回 – 再次按 t 并选择原来的 worktree(通常是 main)。

使用 Recomposable 的典型工作流

  1. 在项目根目录启动 Recomposable——完整栈在 main 上运行。
  2. 打开 Claude Code,让它在新的 worktree 上处理 auth-service
  3. Claude 完成修改后,你需要进行端到端验证。
  4. 在 Recomposable 中定位到 auth-service,按 t,选择 Claude 的 worktree。
  5. 服务会从 Claude 的分支重新构建,而其余栈仍保持在 main
  6. 查看日志、发送请求、验证行为——全部在 TUI 中完成。
  7. 完成后,再次按 t 并切回 main

无需额外的终端标签页、无需路径切换、也不必猜测。

这种方式具备可扩展性:如果 Claude 在两个 worktree 上处理了三个服务,你可以一次性切换这三个服务,WORKTREE 列会立即显示每个服务当前运行的 worktree。

面向未来的功能(想法与缺口)

领域当前状态可能的改进
自动检测工作树更改必须手动按下 t监视新工作树(例如 Claude 创建的工作树),并提示用户自动切换受影响的服务。
工作树感知的级联重建依赖感知的重建(d)会重启传递依赖的服务,但它们仍保持在当前工作树上。添加“级联切换”,当服务被切换时,同时将其依赖服务切换到相同的工作树(可选开关)。
切换前的差异预览没有预览;会盲目重建。在重建前显示当前 compose 文件与目标工作树之间的已更改文件/服务摘要,让用户决定是否值得切换。
分支状态指示器仅显示工作树名称。显示工作树所在分支相对于 main 的领先/落后情况,或是否有未提交的更改,以帮助决定使用哪个工作树进行测试。
批量操作逐个切换服务。允许在 UI 中选择多个服务,并一次性将它们全部切换到相同的工作树。
持久化配置文件覆盖是针对单个服务且是临时的。保存命名的“配置文件”(例如 Claude‑Auth),捕获一组服务到工作树的映射,可通过单个命令加载。

实现其中任何一项都将使该工具对高度依赖 Claude Code + worktree 模式的团队更加强大。

TL;DR(再次)

  • 问题: 在多个微服务之间验证 Claude 生成的更改,需要繁琐的手动处理工作树路径。
  • 解决方案: Recomposable – 一个基于 Docker‑Compose 的 TUI,允许你只需一次按键即可将任意服务切换到任意 Git 工作树,并在清晰的表格中显示每个服务当前的工作树。
  • 结果: 再也不用复制粘贴路径,也不需要额外的 docker compose -f … 标志,一眼即可看到每个容器运行的分支。

试一试,让 UI 为你完成繁重的工作!

# Recomposable – Multi‑service Worktree Switch

> “0 commits ahead” is a different risk profile than a change that only touches a single config file.

它的功能

Recomposable 让您可以通过一次操作,将仓库中 所有服务 从一个 Docker Compose 文件切换到相同的工作树。
当更改涉及多个服务时,您无需再逐个切换服务——摩擦感消失了。

安装

npm install -g recomposable

快速开始

  1. 导航到包含 docker‑compose.yml 文件的目录。

  2. 创建一个 recomposable.json,指向您想要管理的 compose 文件。

  3. 运行工具:

    recomposable

工作树功能可直接在任何拥有多个工作树的 Git 仓库中使用。

链接

  • GitHub:
  • npm:

What it does

Recomposable 让您只需一次操作,就能在同一工作树中,将仓库中的 所有服务 从一个 Docker Compose 文件切换过去。
当一次更改涉及多个服务时,您不再需要逐个切换服务——摩擦感消失。

安装

npm install -g recomposable

快速开始

  1. 导航 到包含 docker‑compose.yml 文件的目录。

  2. 创建 一个指向您想要管理的 compose 文件的 recomposable.json

  3. 运行 工具:

    recomposable

工作树功能在任何拥有多个工作树的 Git 仓库中都能开箱即用。

链接

  • GitHub:
  • npm:
0 浏览
Back to Blog

相关文章

阅读更多 »

2026年企业 Web 开发终极指南

企业网页开发在过去十年中经历了巨大的演变。随着企业对数字平台的依赖日益增加,创建可扩展的、安全的、以及 h...

我构建的每个服务都会死

这正是重点。我是 Ontime Payments 的高级软件工程师,这是一家 fintech 初创公司,提供直接从工资中支付账单的服务。我们有意……