jnmetacode avatar

Using Git Worktrees

This automates the setup of isolated git worktrees so you can work on a new feature without touching your current branch. It checks if you're already in an isolated workspace, looks for native worktree tools in your environment first, then falls back to manual git worktree commands if needed. The detection logic is careful about submodules and existing worktrees to avoid nesting issues. It handles directory placement based on project conventions, validates that worktree folders are gitignored, runs your project's setup commands (npm install, cargo build, etc.), and verifies tests pass before you start coding. Designed to be called by skills like brainstorming or executing-plans whenever they need clean isolation. The emphasis on native tools first is smart since fighting your harness creates phantom state.

skills.sh installs
987
GitHub stars
8.5K
last updated
Aug 21, 2026

Install

$ npx -y skills add jnmetacode/superpowers-zh --skill using-git-worktrees --agent claude-code

Installs into .claude/skills of the current project.

Files

使用 Git 工作树

概述

确保工作发生在隔离的工作区中。优先使用你的平台的原生 worktree 工具。仅在没有原生工具可用时,再回退到手动 git worktree。

核心原则: 先检测现有隔离。然后用原生工具。再回退到 git。绝不与 harness 对抗。

开始时宣布: "我正在使用 using-git-worktrees 技能来建立一个隔离的工作区。"

步骤 0:检测现有隔离

创建任何东西之前,先检查你是否已经在一个隔离的工作区里。

GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)

Submodule 守卫: 在 git submodule 内 GIT_DIR != GIT_COMMON 也为真。在判定"已经在 worktree 内"之前,先确认你不在 submodule 里:

# 如果这条命令返回路径,说明你在 submodule 里,不是 worktree —— 按普通仓库处理
git rev-parse --show-superproject-working-tree 2>/dev/null

如果 GIT_DIR != GIT_COMMON(且不是 submodule): 你已经在一个 linked worktree 内。跳到步骤 2(项目设置)。不要再创建一个 worktree。

按分支状态报告:

  • 在某个分支上:"已经在隔离工作区 <path>,分支 <name>。"
  • 分离 HEAD:"已经在隔离工作区 <path>(分离 HEAD,由外部管理)。完成时需要创建分支。"

如果 GIT_DIR == GIT_COMMON(或在 submodule 内): 你在一个普通的仓库检出里。

用户是否已经在你的 instructions 里表明过 worktree 偏好?如果没有,创建 worktree 之前先征求同意:

"你希望我搭一个隔离的 worktree 吗?它能保护你当前分支不被改动。"

如果用户已声明过偏好,直接遵循,不再询问。如果用户拒绝同意,原地工作并跳到步骤 2。

步骤 1:创建隔离工作区

你有两种机制。按这个顺序尝试。

1a. 原生 Worktree 工具(首选)

Sponsors

Details

Repository
github.com/jnmetacode/superpowers-zh
Category
Git & Pull Requests
First seen
Jun 3, 2026

More from jnmetacode/superpowers-zh

All 20
1github avatarpython-pypi-package-buildergithub/awesome-copilotEnd-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptool950skills.sh installs
2mindrally avatargit-workflowmindrally/skillsGit conventions and workflow guidelines using Conventional Commits, branching strategies, and best practices for version control850skills.sh installs
3code-yeongyu avatarpre-publish-reviewcode-yeongyu/oh-my-openagentNuclear-grade 16-agent pre-publish release gate. Runs /get-unpublished-changes to detect all changes since last npm release, spawns up to 10 ultrabrain agents f771skills.sh installs
4lingfengqaq avatarwebnovel-reviewlingfengqaq/webnovel-writer使用审查 Agent 评估章节质量,生成报告并写回审查指标。766skills.sh installs
5boshu2 avatarpr-implementboshu2/agentopsImplement a scoped OSS PR.743skills.sh installs
6akin-ozer avatargitlab-ci-validatorakin-ozer/cc-devops-skillsValidate, lint, audit, or fix .gitlab-ci.yml pipelines, stages, and jobs.725skills.sh installs