返回顶部
g

git-worktree-managerGit工作树管理

Git Worktree Manager

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
393
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

git-worktree-manager

Git Worktree 管理器

层级: 强大
类别: 工程
领域: 并行开发与分支隔离

概述

使用此技能可安全地通过 Git worktree 并行开展功能开发工作。它标准化了分支隔离、端口分配、环境同步和清理流程,使每个 worktree 的行为如同独立的本地应用,而不会干扰其他分支。

此技能针对多代理工作流进行了优化,其中每个代理或终端会话拥有一个 worktree。

核心能力

  • - 从新分支或现有分支创建 worktree,并采用确定性命名
  • 为每个 worktree 自动分配无冲突端口,并持久化分配结果
  • 将本地环境文件(.env*)从主仓库复制到新的 worktree
  • 可选地根据锁文件检测结果安装依赖
  • 在清理前检测过时的 worktree 和未提交的更改
  • 识别已合并的分支并安全移除过时的 worktree

使用时机

  • - 你需要在本地同时打开 2 个或更多并发分支
  • 你需要为功能开发、热修复和 PR 验证提供独立的开发服务器
  • 你正在与多个代理协作,且这些代理不能共享同一个分支
  • 当前分支被阻塞,但你需要立即发布一个快速修复
  • 你希望进行可重复的清理,而不是临时执行 rm -rf 操作

关键工作流

1. 创建一个完全准备好的 Worktree

  1. 1. 选择一个分支名称和 worktree 名称。
  2. 运行管理器脚本(如果分支不存在则创建)。
  3. 查看生成的端口映射。
  4. 使用分配的端口启动应用。

bash
python scripts/worktree_manager.py \
--repo . \
--branch feature/new-auth \
--name wt-auth \
--base-branch main \
--install-deps \
--format text

如果你使用 JSON 自动化输入:

bash
cat config.json | python scripts/worktree_manager.py --format json


python scripts/worktree_manager.py --input config.json --format json

2. 运行并行会话

推荐约定:

  • - 主仓库:集成分支(main/develop)使用默认端口
  • Worktree A:功能分支 + 偏移端口
  • Worktree B:热修复分支 + 下一个偏移端口

每个 worktree 包含 .worktree-ports.json 文件,其中记录了分配的端口。

3. 带安全检查的清理

  1. 1. 扫描所有 worktree 及其过期时间。
  2. 检查脏树状态和分支合并状态。
  3. 仅移除已合并且干净的 worktree,或显式强制移除。

bash
python scripts/worktree_cleanup.py --repo . --stale-days 14 --format text
python scripts/worktree_cleanup.py --repo . --remove-merged --format text

4. Docker Compose 模式

使用基于分配端口映射的每个 worktree 覆盖文件。脚本输出确定性的端口映射;将其应用到 docker-compose.worktree.yml。

具体模板请参见 docker-compose-patterns.md

5. 端口分配策略

默认策略为 base + (index * stride),并带有冲突检查:

  • - 应用:3000
  • PostgreSQL:5432
  • Redis:6379
  • 步长:10

完整策略及边界情况请参见 port-allocation-strategy.md

脚本接口

  • - python scripts/worktree_manager.py --help
- 创建/列出 worktree - 分配/持久化端口 - 复制 .env* 文件 - 可选地安装依赖
  • - python scripts/worktree_cleanup.py --help
- 按时间检测过期 - 脏状态检测 - 已合并分支检测 - 可选的安全移除

两个工具均支持标准输入 JSON 和 --input 文件模式,适用于自动化流水线。

常见陷阱

  1. 1. 在主仓库目录内创建 worktree
  2. 在所有分支上重复使用 localhost:3000
  3. 在隔离的功能分支之间共享一个数据库 URL
  4. 移除包含未提交更改的 worktree
  5. 删除分支后忘记清理旧的元数据
  6. 未对照目标分支检查就假定合并状态

最佳实践

  1. 1. 每个 worktree 对应一个分支,每个 worktree 对应一个代理。
  2. 保持 worktree 短期存在;合并后移除。
  3. 使用确定性命名模式(wt-<主题>)。
  4. 将端口映射持久化到文件中,而非内存或终端笔记。
  5. 在活跃仓库中每周运行清理扫描。
  6. 机器流程使用 --format json,人工审查使用 --format text。
  7. 除非有意丢弃更改,否则切勿强制移除脏 worktree。

验证清单

在声明设置完成之前:

  1. 1. git worktree list 显示预期的路径和分支。
  2. .worktree-ports.json 存在且包含唯一的端口。
  3. .env 文件已成功复制(如果源仓库中存在)。
  4. 依赖安装命令以退出码 0 结束(如果启用)。
  5. 清理扫描未报告意外的过期脏树。

参考

决策矩阵

在创建新的 worktree 之前,使用此快速选择器:

  • - 需要隔离的依赖和服务器端口 -> 创建新的 worktree
  • 仅需快速本地差异审查 -> 停留在当前 tree
  • 功能分支脏乱时需要热修复 -> 创建专用的热修复 worktree
  • 需要临时复现分支进行 Bug 分类 -> 创建临时 worktree 并在当天清理

操作清单

创建前

  1. 1. 确认主仓库具有干净的基线或有意的 WIP 提交。
  2. 确认目标分支命名约定。
  3. 确认所需的基础分支存在(main/develop)。
  4. 确认没有保留的本地端口已被非仓库服务占用。

创建后

  1. 1. 验证 git status 分支与预期分支匹配。
  2. 验证 .worktree-ports.json 存在。
  3. 验证应用在分配的应用程序端口上启动。
  4. 验证数据库和缓存端点指向隔离的端口。

移除前

  1. 1. 验证分支已推送到上游,并在预期时已合并。
  2. 验证没有未提交的文件残留。
  3. 验证没有正在运行的容器/进程依赖此 worktree 路径。

CI 与团队集成

  • - 使用映射到任务 ID 的 worktree 路径命名(wt-1234-auth)。
  • 在终端标题中包含 worktree 路径,以避免在错误的窗口中提交。
  • 在自动化设置中,将创建元数据持久化到 CI 工件/日志中。
  • 在计划任务中触发清理报告,并将摘要发布到团队频道。

故障恢复

  • - 如果 git worktree add 因路径已存在而失败:检查路径,不要覆盖。
  • 如果依赖安装失败:保留已创建的 worktree,标记状态并继续手动恢复。
  • 如果环境文件复制失败:继续执行并发出警告,列出缺失的文件。
  • 如果端口分配与外部服务冲突:调整基础端口后重新运行。

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 git-worktree-manager-1776172382 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 git-worktree-manager-1776172382 技能

通过命令行安装

skillhub install git-worktree-manager-1776172382

下载

⬇ 下载 git-worktree-manager v1.0.0(免费)

文件大小: 10.91 KB | 发布时间: 2026-4-15 10:44

v1.0.0 最新 2026-4-15 10:44
Initial publish

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部