mcpField
G
git:create-worktree

git:create-worktree

github.com/neolabhq開発1.8k429 回インストール10 週間前に更新
リポジトリ

git:create-worktree について

並行開発向けに Git worktree を作成する Claude コマンドです。ブランチ名の整形やローカル・リモートブランチの判定を行い、依存関係を検出してセットアップします。

主な機能

  1. 01Git worktree の作成と一覧表示
  2. 02ブランチ種別の推定と名前の整形
  3. 03ローカル・リモートブランチの処理
  4. 04プロジェクト依存関係の検出
  5. 05依存関係の自動インストール

活用シーン

  1. 01独立した機能ブランチの作成
  2. 02ホットフィックス用 worktree の作成
  3. 03プルリクエストレビュー環境の準備
  4. 04隔離した実験の開始

インストール

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

$npx skills add https://github.com/neolabhq/context-engineering-kit --skill git:create-worktree

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

詳細

Claude コマンド:Worktree の作成

並行開発用の Git worktree を作成してセットアップします。プロジェクトの依存関係を自動検出してインストールします。

手順

重要:以下の手順を記載どおりに正確に実行してください。

  1. 現在の状態を確認:git worktree list を実行して既存の worktree を表示し、git status を実行してリポジトリがクリーンな状態であること(問題を引き起こす可能性のある未コミットの変更がないこと)を確認します。

  2. 最新のリモートブランチを取得:git fetch --all を実行して、すべてのリモートブランチの情報をローカルに取得します。

  3. ユーザー入力を解析:ユーザーが作成しようとしているものを判断します。

    • <name>:タイプのプレフィックスを自動検出して worktree を作成します
    • --list:既存の worktree を表示して終了します
    • 入力なし:ユーザーに名前を入力するよう対話形式で尋ねます
  4. 名前からブランチタイプを自動検出:最初の単語が既知のブランチタイプか確認します。該当する場合はそのタイプをプレフィックスとして使い、残りを名前にします。該当しない場合は、デフォルトで feature/ を使います。

    既知のタイプ: feature、feat、fix、bug、bugfix、hotfix、release、docs、test、refactor、chore、spike、experiment、review

    例:

    • refactor auth system → refactor/auth-system
    • fix login bug → fix/login-bug
    • auth system → feature/auth-system(デフォルト)
    • hotfix critical error → hotfix/critical-error

    名前の正規化: 空白をダッシュに変換し、小文字に変換して、ダッシュとアンダースコア以外の特殊文字を削除します。

  5. 作成する各 worktree について: a. ブランチ名の構築:検出したタイプと正規化した名前から完全なブランチ名を構築します。

    • <prefix>/<normalized-name>(例:feature/auth-system)

    b. ブランチの解決:ブランチがローカルに存在するか、リモートに存在するか、作成する必要があるかを判断します。

    • ブランチがローカルに存在する場合:git worktree add ../<project>-<name> <branch>
    • ブランチがリモートに存在する場合(origin/):git worktree add --track -b <branch> ../<project>-<name> origin/<branch>
    • ブランチが存在しない場合:ベースブランチ(デフォルト:現在のブランチ、または main/master)をユーザーに尋ねてから、git worktree add -b <branch> ../<project>-<name> <base> を実行します。

    c. パスの規則:../<project-name>-<name> の形式で兄弟ディレクトリを使います。

    • 現在のディレクトリからプロジェクト名を取得します
    • 正規化した名前を使います(プレフィックスを含む完全なブランチ名は使いません)
    • 例:feature/auth-system → ../myproject-auth-system

    d. worktree を作成:適切な git worktree add コマンドを実行します。

    e. 依存関係を検出:新しい worktree 内で依存関係ファイルを確認し、セットアップが必要か判断します。

    • package.json → Node.js プロジェクト(npm/yarn/pnpm/bun)
    • requirements.txt または pyproject.toml または setup.py → Python プロジェクト
    • Cargo.toml → Rust プロジェクト
    • go.mod → Go プロジェクト
    • Gemfile → Ruby プロジェクト
    • composer.json → PHP プロジェクト

    f. パッケージマネージャーを検出(Node.js プロジェクトの場合):

    • bun.lockb → bun install を使います
    • pnpm-lock.yaml → pnpm install を使います
    • yarn.lock → yarn install を使います
    • package-lock.json またはデフォルト → npm install を使います

    g. 自動セットアップ:依存関係のインストールを自動的に実行します。

    • worktree に移動し、検出したインストールコマンドを実行します
    • 進行状況を報告します:「[package manager] で依存関係をインストールしています...」
    • インストールに失敗した場合はエラーを報告しますが、worktree 作成の概要表示は続行します
  6. 概要:作成した worktree の概要を表示します。

    • worktree のパス
    • ブランチ名(プレフィックスを含む完全な名前)
    • セットアップの状態(依存関係のインストール成功または失敗)
    • すばやく移動するためのコマンド:cd <worktree-path>

Worktree のパス規則

整理しやすいように、worktree は兄弟ディレクトリとして作成します。

~/projects/
  myproject/                # Main worktree (current directory)
  myproject-add-auth/       # Feature branch worktree (feature/add-auth)
  myproject-critical-bug/   # Hotfix worktree (hotfix/critical-bug)
  myproject-pr-456/         # PR review worktree (review/pr-456)

命名規則:

  • 形式:<project-name>-<name>(ブランチ名全体ではなく、名前の部分を使います)
  • ブランチ名:<type-prefix>/<name>(例:feature/add-auth)
  • 簡潔にするため、ディレクトリ名には <name> の部分のみを使います

例

機能用ワークツリー(デフォルト):

> /git:create-worktree auth system
# Branch: feature/auth-system
# Creates: ../myproject-auth-system

修正用ワークツリー:

> /git:create-worktree fix login error
# Branch: fix/login-error
# Creates: ../myproject-login-error

リファクタリング用ワークツリー:

> /git:create-worktree refactor api layer
# Branch: refactor/api-layer
# Creates: ../myproject-api-layer

ホットフィックス用ワークツリー:

> /git:create-worktree hotfix critical bug
# Branch: hotfix/critical-bug
# Creates: ../myproject-critical-bug

既存のワークツリーを一覧表示する:

> /git:create-worktree --list
# Shows: git worktree list output

セットアップ検出の例

pnpm を使用する Node.js プロジェクト:

Detected Node.js project with pnpm-lock.yaml
Installing dependencies with pnpm...
✓ Dependencies installed successfully

Python プロジェクト:

Detected Python project with requirements.txt
Installing dependencies with pip...
✓ Dependencies installed successfully

Rust プロジェクト:

Detected Rust project with Cargo.toml
Building project with cargo...
✓ Project built successfully

よく使うワークフロー

機能用ブランチをすばやく作成する
> /git:create-worktree new dashboard
# Branch: feature/new-dashboard
# Creates worktree, installs dependencies, ready to code
機能の作業中にホットフィックスを行う
# In main worktree, working on feature
> /git:create-worktree hotfix critical bug
# Branch: hotfix/critical-bug
# Creates separate worktree from main/master
# Fix bug in hotfix worktree
# Return to feature work when done
スタッシュせずに PR をレビューする
> /git:create-worktree review pr 123
# Branch: review/pr-123
# Creates worktree for reviewing PR
# Can run tests, inspect code
# Delete when review complete
実験や試作を行う
> /git:create-worktree spike new architecture
# Branch: spike/new-architecture
# Creates isolated worktree for experimentation
# Discard or merge based on results

重要な注意事項

  • ブランチのロック:各ブランチは一度に 1 つのワークツリーでのみチェックアウトできます。ブランチがすでにチェックアウトされている場合、コマンドはそのブランチがあるワークツリーを知らせます。

  • 共有される .git:すべてのワークツリーで同じ Git オブジェクトデータベースを共有します。どのワークツリーでコミットした変更も、ほかのすべてのワークツリーから確認できます。

  • クリーンな作業ディレクトリ:コマンドは未コミットの変更を確認し、変更がある場合は警告します。ワークツリーの作成は、作業ディレクトリがクリーンな状態で行うのが最も安全です。

  • 兄弟ディレクトリ:ワークツリーは、ワークスペースを整理しやすくするため、常に兄弟ディレクトリ(../ を使用)として作成されます。メインリポジトリ内にワークツリーを作成しないでください。

  • 依存関係の自動インストール:コマンドはプロジェクトの種類とパッケージマネージャーを自動検出し、確認を求めずに適切なインストールコマンドを実行します。

  • リモート追跡:リモートブランチの場合、ワークツリーは適切な追跡設定(--track フラグ)で作成されるため、プルやプッシュが正しく動作します。

クリーンアップ

ワークツリーの使用を終えたら、適切な削除コマンドを使用してください。

git worktree remove ../myproject-add-auth

未コミットの変更があるワークツリーの場合は、こちらを使用してください。

git worktree remove --force ../myproject-add-auth

rm -rf でワークツリーを削除しないでください。必ず git worktree remove を使用してください。

トラブルシューティング

「ブランチはすでにチェックアウトされています」

  • git worktree list を実行して、ブランチがどこでチェックアウトされているか確認します。
  • そのワークツリーで作業するか、先にワークツリーを削除します。

「ワークツリーを作成できません — パスがすでに存在します」

  • 対象のディレクトリがすでに存在しています。
  • ディレクトリを削除するか、別のワークツリーパスを選択します。

「依存関係のインストールに失敗しました」

  • 手動でワークツリーに移動します:cd ../myproject-<name>
  • インストールコマンドを直接実行して、エラーの詳細を確認します。
  • よくある原因:システム依存関係の不足、ネットワークの問題、ロックファイルの破損

「誤った種類が検出されました」

  • 最初の単語が既知の種類である場合、それがブランチの種類として使用されます。
  • 特定の種類を指定するには、次のいずれかで始めます:fix、hotfix、docs、test、refactor、chore、spike、review
  • 最初の単語が既知の種類でない場合、デフォルトの種類は feature/ です。

コメント