Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Manage Git worktrees in project-level ../.zcf/project-name/ directory with smart defaults, IDE integration and content migration
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 445% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 103% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 67% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 165% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 30% | 0% |
管理 Git worktree,支持智能默认、IDE 集成和内容迁移,使用结构化的 ../.zcf/项目名/ 路径。
直接执行命令并提供简洁结果。
bash# 基本操作 /git-worktree add <path> # 从 main/master 创建名为 <path> 的新分支 /git-worktree add <path> -b <branch> # 创建指定名称的新分支 /git-worktree add <path> -o # 创建并直接用 IDE 打开 /git-worktree list # 显示所有 worktree 状态 /git-worktree remove <path> # 删除指定的 worktree /git-worktree prune # 清理无效 worktree 记录 # 内容迁移 /git-worktree migrate <target> --from <source> # 迁移未提交内容 /git-worktree migrate <target> --stash # 迁移 stash 内容
| 选项 | 说明 | | ------------------ | -------------------------------------------- | | add [<path>] | 在 ../.zcf/项目名/<path> 添加新的 worktree | | migrate <target> | 迁移内容到指定 worktree | | list | 列出所有 worktree 及其状态 | | remove <path> | 删除指定路径的 worktree | | prune | 清理无效的 worktree 引用 | | -b <branch> | 创建新分支并检出到 worktree | | -o, --open | 创建成功后直接用 IDE 打开(跳过询问) | | --from <source> | 指定迁移源路径(migrate 专用) | | --stash | 迁移当前 stash 内容(migrate 专用) | | --track | 设置新分支跟踪对应的远程分支 | | --guess-remote | 自动猜测远程分支进行跟踪 | | --detach | 创建分离 HEAD 的 worktree | | --checkout | 创建后立即检出(默认行为) | | --lock | 创建后锁定 worktree |
git rev-parse --is-inside-work-tree 验证 Git 仓库../.zcf/项目名/<path> 目录创建 worktreebash# worktree 检测的核心路径计算逻辑 get_main_repo_path() { local git_common_dir=$(git rev-parse --git-common-dir 2>/dev/null) local current_toplevel=$(git rev-parse --show-toplevel 2>/dev/null) # 检测是否在 worktree 中 if [[ "$git_common_dir" != "$current_toplevel/.git" ]]; then # 在 worktree 中,从 git-common-dir 推导主仓库路径 dirname "$git_common_dir" else # 在主仓库中 echo "$current_toplevel" fi } MAIN_REPO_PATH=$(get_main_repo_path) PROJECT_NAME=$(basename "$MAIN_REPO_PATH") WORKTREE_BASE="$MAIN_REPO_PATH/../.zcf/$PROJECT_NAME" # 始终使用绝对路径防止嵌套问题 ABSOLUTE_WORKTREE_PATH="$WORKTREE_BASE/<path>"
关键修复: 在现有 worktree 内创建新 worktree 时,始终使用绝对路径以防止出现类似 ../.zcf/project/.zcf/project/path 的路径嵌套问题。
-b 时,使用路径名创建新分支.zcf 目录.gitignore 文件中的环境变量文件模式.gitignore 中列出的 .env 和 .env.* 文件.env.example 等模板文件bash# 环境文件复制实现 copy_environment_files() { local main_repo="$MAIN_REPO_PATH" local target_worktree="$ABSOLUTE_WORKTREE_PATH" local gitignore_file="$main_repo/.gitignore" # 检查 .gitignore 是否存在 if [[ ! -f "$gitignore_file" ]]; then return 0 fi local copied_count=0 # 检测 .env 文件 if [[ -f "$main_repo/.env" ]] && grep -q "^\.env$" "$gitignore_file"; then cp "$main_repo/.env" "$target_worktree/.env" echo "✅ 已复制 .env" ((copied_count++)) fi # 检测 .env.* 模式文件(排除 .env.example) for env_file in "$main_repo"/.env.*; do if [[ -f "$env_file" ]] && [[ "$(basename "$env_file")" != ".env.example" ]]; then local filename=$(basename "$env_file") if grep -q "^\.env\.\*$" "$gitignore_file"; then cp "$env_file" "$target_worktree/$filename" echo "✅ 已复制 $filename" ((copied_count++)) fi fi done if [[ $copied_count -gt 0 ]]; then echo "📋 已从 .gitignore 复制 $copied_count 个环境文件" fi }
-o 标志跳过提示直接打开bash# 迁移未提交改动 /git-worktree migrate feature-ui --from main /git-worktree migrate hotfix --from ../other-worktree # 迁移 stash 内容 /git-worktree migrate feature-ui --stash
迁移流程:
bash# 基本用法 /git-worktree add feature-ui # 从 main/master 创建新分支 'feature-ui' /git-worktree add feature-ui -b my-feature # 创建新分支 'my-feature',路径为 'feature-ui' /git-worktree add feature-ui -o # 创建并直接用 IDE 打开 # 内容迁移场景 /git-worktree add feature-ui -b feature/new-ui # 创建新功能 worktree /git-worktree migrate feature-ui --from main # 迁移未提交改动 /git-worktree migrate hotfix --stash # 迁移 stash 内容 # 管理操作 /git-worktree list # 查看所有 worktree /git-worktree remove feature-ui # 删除不需要的 worktree /git-worktree prune # 清理无效引用
示例输出:
✅ Worktree created at ../.zcf/项目名/feature-ui
✅ 已复制 .env
✅ 已复制 .env.local
📋 已从 .gitignore 复制 2 个环境文件
🖥️ 是否在 IDE 中打开 ../.zcf/项目名/feature-ui?[y/n]: y
🚀 正在用 VS Code 打开 ../.zcf/项目名/feature-ui...parent-directory/
├── your-project/ # 主项目
│ ├── .git/
│ └── src/
└── .zcf/ # worktree 管理
└── your-project/ # 项目 worktree
├── feature-ui/ # 功能分支
├── hotfix/ # 修复分支
└── debug/ # 调试 worktreebash# 配置自定义 IDE git config worktree.ide.custom.sublime "subl %s" git config worktree.ide.preferred "sublime" # 控制自动检测 git config worktree.ide.autodetect true # 默认
.git 目录,节省磁盘空间git cherry-pick.gitignore 中列出的环境文件到新 worktree.env.example 仅保留在主仓库中Other measured skills in the registry, with their headline benchmark lift.