mcpField
U
using-git-worktrees

using-git-worktrees

github.com/pixel-process-ug開発378 回インストール34 週間前に更新
リポジトリ

using-git-worktrees について

並行開発、テスト、レビュー向けに、隔離された Git worktree を作成する手順スキルです。作業開始前に、配置先の選択、安全確認、プロジェクト設定、ベースラインテストの検証を案内します。

主な機能

  1. 01worktree 配置先の選択
  2. 02ブランチとリポジトリの安全確認
  3. 03プロジェクト設定の検出
  4. 04環境ファイルの扱い
  5. 05ベースラインテストの検証
  6. 06worktree のクリーンアップ案内

活用シーン

  1. 01現在の作業に影響せず機能ブランチを開始
  2. 02別タスクと並行してバグ修正
  3. 03テストやレビュー用の隔離環境を準備
  4. 04時間のかかるテスト中も開発を継続

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill using-git-worktrees

インストール後、Claude Code で/using-git-worktreesを入力して読み込まれたか確認します。

詳細

Git Worktree の使用

概要

git worktree を使用して、並行開発タスク用の独立した作業ディレクトリを作成できます。これにより、競合を起こさずに複数のブランチを同時にチェックアウトできます。このスキルでは、ディレクトリの選択からセットアップの検証まで、決定的な複数フェーズのプロセスを適用し、作業を開始する前にすべての worktree が本番環境で使える状態であることを確認します。

使用するタイミング

  • 現在の作業に影響しない新しい機能ブランチを開始するとき
  • 複数のタスク(バグ修正と機能開発など)を同時に進めるとき
  • テストやコードレビュー用のクリーンな環境を作成するとき
  • 開発を続けながら、テストやビルドなどの長時間実行プロセスを実行するとき

フェーズ 1:worktree ディレクトリの選択

[HARD-GATE] ディレクトリの選択を省略しないでください。優先順位を確認せずに既定のパスを想定しないでください。

次の優先順位に必ず従ってください。

優先度 1:タスクに一致する既存の worktree

タスク用の worktree がすでに存在するか確認します。

git worktree list

一致する worktree がある場合は、それを使用します。重複して作成しないでください。

優先度 2:CLAUDE.md の worktree ディレクトリのヒント

プロジェクトの CLAUDE.md に設定済みの worktree ディレクトリがあるか確認します。

# Example CLAUDE.md entry
worktree-directory: ../worktrees

指定されている場合は、そのディレクトリの下に worktree を作成します。

優先度 3:ユーザーに確認する

ヒントが設定されておらず、明確な慣例もない場合は、worktree の作成場所をユーザーに確認します。妥当な既定値を提案してください。

../worktrees/<project-name>/<branch-name>

停止 — 先に進む前に、worktree ディレクトリをユーザーに確認してください。

ディレクトリ選択の判断表
条件対応
このブランチ用の worktree がすでに存在する既存の worktree に移動する
CLAUDE.md に worktree-directory がある設定されたパスを使用する
プロジェクトに既存の worktree がある同じ親ディレクトリの配置パターンを使用する
慣例が見つからないユーザーに確認し、../worktrees/<project>/<branch> を提案する
ユーザーがリポジトリのルート内のパスを指定する警告する — .gitignore に追加する必要があります

フェーズ 2:安全性の確認

[HARD-GATE] すべての安全性チェックに合格するまで、worktree を作成しないでください。

.gitignore の対象範囲を確認する

worktree ディレクトリがリポジトリのルート内にある場合は、.gitignore に含まれていることを確認します。

# Check if the worktree path would be tracked
git check-ignore <worktree-path>

無視対象になっていない場合は、ユーザーに警告し、.gitignore への追加を提案します。

作業ツリーがクリーンであることを確認する

問題の原因となる可能性がある未コミットの変更がないか確認します。

git status --porcelain

作業ツリーがクリーンでない場合は、ユーザーに知らせ、どのように進めるか確認します。

  • 先に変更をコミットする
  • 変更をスタッシュする
  • そのまま進める(worktree の作成自体は安全です)
別の worktree にブランチが存在しないことを確認する
git worktree list

ブランチを複数の worktree で同時にチェックアウトすることはできません。すでにチェックアウトされている場合は、代わりにその既存の worktree に移動します。

安全性チェックの判断表
チェック結果対応
パスがリポジトリ内にあり、.gitignore に含まれていないFAIL先に .gitignore に追加する
別の worktree にブランチがあるFAIL既存の worktree を使用する
作業ツリーがクリーンでないWARNユーザーに知らせ、希望を確認する
パスがすでに存在する(worktree ではない)FAIL別のパスを選ぶ
すべてのチェックに合格PASSフェーズ 3 に進む

フェーズ 3:worktree の作成

# For a new branch
git worktree add <path> -b <branch-name> <base-branch>

# For an existing branch
git worktree add <path> <existing-branch>

worktree を作成した場所の完全なパスを必ずユーザーに伝えます。

Worktree created at: /absolute/path/to/worktree
Branch: feature/my-feature
Base: main

停止 — セットアップに進む前に、worktree が正常に作成されたことを確認してください。

フェーズ 4:プロジェクトのセットアップと自動検出

worktree の作成後、プロジェクトのセットアップコマンドを検出して実行します。

セットアップ検出の判断表
インジケーターファイルエコシステムセットアップコマンド
pnpm-lock.yamlNode.js(pnpm)pnpm install
yarn.lockNode.js(yarn)yarn install
package-lock.jsonNode.js(npm)npm install
package.json(ロックファイルなし)Node.js(npm)npm install
pyproject.toml + tool.poetryPython(poetry)poetry install
pyproject.toml(poetry なし)Python(pip)pip install -e .
setup.pyPython(pip)pip install -e .
requirements.txtPython(pip)pip install -r requirements.txt
go.modGogo mod download
Cargo.tomlRustcargo build
GemfileRubybundle install
composer.jsonPHPcomposer install
複数のエコシステム

プロジェクトが複数のエコシステムを使用している場合(例:Go バックエンドと Node.js フロントエンド)、検出された各エコシステムのセットアップを、適切なサブディレクトリで実行します。

環境ファイル

プロジェクトに .env.example または .env.template がある場合:

# Copy environment template if .env does not exist in worktree
cp .env.example .env  # then inform user to update values

フェーズ 5:クリーンなベースラインテストの検証

[HARD-GATE] ベースラインテストに合格するか、失敗が確認されるまで、作業を進めてはいけません。

作業を始める前に、プロジェクトのテストスイートを実行して、クリーンなベースラインを確立します。

# Use the project's test command
# Node.js: npm test / yarn test / pnpm test
# Python: pytest / python -m pytest
# Go: go test ./...
# Rust: cargo test

目的:

  • 作業ツリーが正しくセットアップされていることを確認します
  • 変更を加える前に、すべてのテストに合格することを確認します
  • この時点以降のテスト失敗は、既存の問題ではなく、変更によって発生したものだと判断できます

ベースラインテストに失敗した場合:

  • 失敗についてユーザーに報告します
  • ベースラインの状況が把握できるまで、作業を進めてはいけません
  • ベースブランチにテストを先に修正する必要のある問題がある可能性があります

フェーズ 6:場所の報告

作業ツリーの場所を、必ずユーザーにはっきりと報告します。

Worktree ready:
  Path:    /Users/dev/worktrees/myproject/feature-auth
  Branch:  feature/auth-refactor
  Base:    main
  Setup:   npm install (completed)
  Tests:   24 passed, 0 failed

クリーンアップのパターン

マージまたは作業完了後
# Remove the worktree
git worktree remove <path>

# If files remain (dirty worktree), force removal
git worktree remove --force <path>

# Prune stale worktree references
git worktree prune
すべての作業ツリーを一覧表示する
git worktree list
ロックされた作業ツリーの処理

誤って削除されないよう作業ツリーがロックされている場合:

# Unlock before removing
git worktree unlock <path>
git worktree remove <path>

アンチパターン/よくある間違い

アンチパターン問題である理由代わりに行うこと
同じブランチ用に作業ツリーを重複して作成するGit では許可されておらず、時間の無駄になりますまず git worktree list を確認します
.gitignore を設定せずにリポジトリ内に作業ツリーを作成する作業ツリーのファイルが未追跡として表示されますパスを .gitignore に追加します
作業ツリーで依存関係のインストールを省略する依存関係の不足により、ビルドやテストが失敗します必ずプロジェクトのセットアップを実行します
ベースラインテストの実行を省略する既存の失敗と新たな失敗を区別できません作業を始める前にテストを実行します
作業ツリー間で環境変数が同じだと思い込む.env ファイルは作業ツリー間で共有されません.env をコピーして設定します
マージ後に古い作業ツリーを放置するディスク容量を浪費し、git worktree list が分かりにくくなりますブランチの作業完了後に作業ツリーを削除します
未コミットの作業がある作業ツリーを強制削除するデータが永久に失われます先にコミットするか、スタッシュします

連携ポイント

スキル連携内容
finishing-a-development-branch作業ツリーでの作業完了後、これを使ってマージするか PR を作成します
dispatching-parallel-agents真の分離を実現するため、エージェントを個別の作業ツリーで実行します
verification-before-completion作業ツリーを離れる前に作業内容を検証します
self-learning作業ツリーのディレクトリ設定を確認するため、CLAUDE.md を確認します
planning作業ツリーの作成は、多くの場合、計画を実行する最初のステップです

スキルの種類

RIGID — このプロセスに正確に従ってください。すべてのフェーズを順番に完了する必要があります。安全性の確認を省略してはいけません。ベースラインテストの検証を省略してはいけません。ディレクトリを確認せずに作業ツリーを作成してはいけません。

コメント