← ClaudeAtlas

using-git-worktreeslisted

當開始需要與目前工作區隔離的功能工作,或在執行實作計畫之前使用 —— 透過原生工具或 git worktree 備援方式確保有隔離的工作區
shumingyang-opencode/superpowers-zh-tw · ★ 0 · Code & Development · score 70
Install: claude install-skill shumingyang-opencode/superpowers-zh-tw
# 使用 Git Worktrees ## 總覽 確保工作在隔離的工作區中進行。優先使用你平台的原生 worktree 工具。只有在沒有原生工具可用時,才改用手動 git worktree。 **核心原則:** 先偵測現有的隔離狀態。再用原生工具。最後才回到 git。永遠不要對抗 harness。 **開始時宣告:** 「我正使用 using-git-worktrees 技能來設定隔離的工作區。」 ## 第 0 步:偵測現有的隔離狀態 **在建立任何東西之前,檢查你是否已在隔離的工作區中。** ```bash 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) ``` **子模組防護:** `GIT_DIR != GIT_COMMON` 在 git 子模組內部也成立。在得出「已在 worktree 中」的結論之前,先確認你不位於子模組中: ```bash # If this returns a path, you're in a submodule, not a worktree — treat as normal repo git rev-parse --show-superproject-working-tree 2>/dev/null ``` **如果 `GIT_DIR != GIT_COMMON`(且不是子模組):** 你已在一個連結的 worktree 中。跳到第 2 步(專案設定)。不要再建立 worktree。 回報分支狀態: - 在分支上:「已位於隔離工作區 `<path>`,分支 `<name>`。」 - Detached HEAD:「已位於隔離工作區 `<path>`(detached HEAD,外部管理)。完成時需建立分支。」 **如果 `GIT_DIR == GIT_COMMON`(或在子模組中):** 你位於一般的 repo checkout 中。 使用者是否已在你的指令中表明其 worktree 偏好?如果沒有,在建立 worktree 前先徵求同意: > 「你要我設定一個隔離的 worktree 嗎?它會保護你目前的分支不受變更影響。」 尊重任何已宣告的偏好,不再詢問。如果使用者婉拒同意,就原地工作並跳到第 2 步。 ## 第 1 步:建立隔離工作區 **你有兩種機制。依這個順序嘗試。** ### 1a. 原生 Worktree 工具(首選) 使用者已要求隔離工作區(第 0 步的同意)。你已有建立 worktree 的方式嗎?可能是名為 `EnterWorktree`、`WorktreeCreate` 的工具、`/worktree` 指令,或 `--worktree` 旗標。如果有,就使用它並跳到第 2 步。 原生工具會自動處理目錄位置、分支建立與清理。當你有原生工具卻用 `git worktree add`,會建立你的 harness 看不見也無法管理的幽靈狀態。 只有在沒有原生 worktree 工具可用時,才繼續到第 1b 步。 ### 1b. Git Worktree 備援 **只有當第 1a 步不適用時才使用** —— 你沒有可用的原生 worktree 工具。手動用