worktree-manager · git:20260206.1f5ae2a · 2026-02-06 · sha256 b50265a35b18912a

worktree-manager git:20260206.1f5ae2aA

Immutable. This exact content is served forever at /api/v1/blob/b50265a35b18912a.

---
name: worktree-manager
description: Git Worktree 隔離管理專家,建立獨立的開發環境分支避免影響主分支。透過結構化工作流程管理 worktree 的建立、驗證和清理。
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
---

# Worktree Manager

Git Worktree 隔離管理專家,在獨立的工作目錄中進行開發,避免影響主分支。

## 觸發條件

**自動觸發時機:**
- `dd-dev --worktree` 時,在開發流程最前面執行
- 使用者提到「worktree」、「分支隔離」、「獨立環境」

**初始互動:**
評估目前環境狀態,建立隔離的 worktree 環境。

## 工作流程

### Stage 1: 環境評估

**目標:** 檢查 git 狀態,確保可以建立 worktree

#### Step 1: 檢查 Git 狀態
- 確認是 git repo(`git rev-parse --is-inside-work-tree`)
- 檢查是否有未提交的變更(`git status --porcelain`)
- 如果有未提交的變更,提示使用者先處理

#### Step 2: 檢查現有 Worktree
- 列出現有 worktree(`git worktree list`)
- 檢查是否已存在同名 worktree
- 如果已存在,詢問是否繼續使用或重新建立

#### Step 3: 確認設定
使用 AskUserQuestion 詢問:
1. 功能分支名稱(建議:`feature/<feature-name>`)
2. Worktree 位置(建議:`../<project-name>-worktree-<branch>`)
3. 是否需要安裝依賴(npm install / pip install 等)

**退出條件:** Git 狀態乾淨,worktree 設定已確認。

### Stage 2: Worktree 建立

**目標:** 建立隔離的 worktree 環境並驗證

#### Step 1: 建立 Worktree

```bash
# 建立新分支並設定 worktree
git worktree add -b <branch-name> <worktree-path> <base-branch>
```

- `<branch-name>`:功能分支名稱
- `<worktree-path>`:worktree 目錄路徑
- `<base-branch>`:基於的分支(通常是 main 或 develop)

#### Step 2: 專案設定

在 worktree 中執行專案 setup:

```bash
cd <worktree-path>

# Node.js 專案
npm install  # 或 yarn / pnpm install

# Python 專案
pip install -r requirements.txt  # 或 poetry install

# 其他設定
cp .env.example .env  # 如果存在
```

#### Step 3: 測試基線驗證

在 worktree 中執行現有測試,確保基線正常:

```bash
# 執行測試
npm test  # 或對應的測試指令

# 記錄基線結果
echo "基線測試結果:通過/失敗" >> <worktree-path>/WORKTREE_INFO.md
```

#### Step 4: 建立 Worktree 資訊檔

在 worktree 中建立 `WORKTREE_INFO.md`:

```markdown
# Worktree 資訊

- **建立時間**:YYYY-MM-DD HH:MM
- **分支名稱**:<branch-name>
- **基於分支**:<base-branch>
- **Worktree 路徑**:<worktree-path>
- **主 repo 路徑**:<main-repo-path>
- **基線測試**:通過/失敗
```

**退出條件:** Worktree 已建立,依賴已安裝,基線測試通過。

### Stage 3: Worktree 管理

**目標:** 提供 worktree 的日常管理操作

#### 操作 1: 列出 Worktree

```bash
git worktree list
```

顯示所有 worktree 及其分支、路徑。

#### 操作 2: 清理 Worktree

開發完成後清理 worktree:

```bash
# 確認所有變更已提交
cd <worktree-path>
git status

# 移除 worktree
cd <main-repo-path>
git worktree remove <worktree-path>

# 清理過時的 worktree
git worktree prune
```

#### 操作 3: Merge 回主分支

將 worktree 分支 merge 回主分支:

```bash
cd <main-repo-path>

# 切換到主分支
git checkout <base-branch>

# Merge 功能分支
git merge <branch-name>

# 如果需要,刪除功能分支
git branch -d <branch-name>
```

#### 操作 4: 處理衝突

如果 merge 有衝突:
1. 列出衝突檔案
2. 逐一解決衝突
3. 標記已解決
4. 完成 merge

**退出條件:** 使用者完成所需的 worktree 管理操作。

## 注意事項

### Worktree 限制
- 一個分支只能有一個 worktree
- 不能在已存在 worktree 的分支上 checkout
- 子模組在 worktree 中可能需要特殊處理

### 最佳實踐
- Worktree 路徑放在主 repo 的平行目錄
- 使用有意義的分支名稱(`feature/`、`fix/` 前綴)
- 開發完成後及時清理 worktree
- 定期 rebase 主分支以減少衝突

### .gitignore 注意
- Worktree 共用主 repo 的 .gitignore
- 如果 worktree 需要額外的忽略規則,使用 `.git/info/exclude`

## 互動原則

- Stage 1 需要與使用者確認設定
- Stage 2 自動執行,完成後報告結果
- Stage 3 根據使用者需求執行對應操作
- 如果基線測試失敗,警告使用者但不阻止建立