ブランチを切り替えるたびに手が止まる問題
フロントエンドの新機能を実装していたら、本番で緊急バグが見つかった。git stash して git checkout hotfix して修正を入れて、また元のブランチに戻して git stash pop します。戻ったら npm の依存関係が壊れていて node_modules を再インストール——こんな経験は一度や二度ではないはずです。
Antigravity のマルチワークスペース機能と git worktree を組み合わせると、この問題が根本から解消します。ブランチごとに独立したディレクトリを持ち、それぞれに AI エージェントを割り当てて並列に作業できます。stash も不要、依存関係の衝突もありません。
ここではgit worktree の基本からAntigravity での実践的な並列開発ワークフローまでを、個人開発で実際に使っているパターンをベースに解説します。
git worktree とは何か — ブランチの物理的分離
git worktree は、1つのリポジトリから複数の作業ディレクトリを作成する Git の標準機能です。通常の git clone と違い、.git オブジェクトを共有するためディスク容量を節約でき、ブランチ間のコミット履歴も即座に参照できます。
# メインリポジトリ(すでに clone 済み)
cd ~/projects/my-app
# hotfix 用の worktree を作成
git worktree add ../my-app-hotfix hotfix/payment-bug
# 新機能用の worktree を作成
git worktree add ../my-app-feature feature/user-dashboardこの時点で3つの独立したディレクトリが存在する:
~/projects/my-app— main ブランチ(元のディレクトリ)~/projects/my-app-hotfix— hotfix ブランチ~/projects/my-app-feature— feature ブランチ
それぞれが完全に独立したファイルシステムを持つため、片方で npm install しても他方に影響しません。ここが git stash + git checkout との決定的な違いです。
Antigravity のワークスペースと worktree を接続する
Antigravity の Agent Manager では、左ペインの「Open Workspace」から任意のディレクトリを開ける。git worktree で作成した各ディレクトリをそれぞれ別のワークスペースとして開くことで、ブランチごとに独立した AI エージェントが稼働する環境が整う。
ステップ 1: worktree の作成と依存関係のセットアップ
# プロジェクトルートで実行
cd ~/projects/my-app
# feature ブランチ用の worktree
git worktree add ../my-app-feat feature/new-api
cd ../my-app-feat
npm install # この worktree 専用の node_modules が生成される
# hotfix ブランチ用の worktree
cd ~/projects/my-app
git worktree add ../my-app-fix hotfix/auth-error
cd ../my-app-fix
npm installステップ 2: Antigravity で各ワークスペースを開く
Agent Manager を開き、各 worktree ディレクトリをワークスペースとして追加します。ワークスペース名はディレクトリ名から自動的に設定されるが、分かりやすい名前に変更しておくとよい。
Workspace 1: my-app-feat → "新API開発"
Workspace 2: my-app-fix → "認証バグ修正"
Workspace 3: my-app → "main(レビュー・マージ用)"
ステップ 3: 各ワークスペースに AGENTS.md を配置
worktree ごとに異なる AGENTS.md を置くことで、エージェントの挙動をブランチの目的に合わせて制御できます。これは通常のブランチ切り替えでは実現しにくいテクニックです。
<\!-- my-app-feat/AGENTS.md -->
# エージェント指示
## コンテキスト
新しい REST API エンドポイントの実装。OpenAPI 仕様に厳密に従うこと。
## ルール
- src/api/ 配下のファイルのみ変更可
- テストは必ず src/__tests__/api/ に追加
- 既存のエンドポイントは変更禁止<\!-- my-app-fix/AGENTS.md -->
# エージェント指示
## コンテキスト
認証フローの緊急バグ修正。最小限の変更で問題を解決する。
## ルール
- 変更はバグ修正に直接関係するファイルのみ
- リファクタリングは行わない
- 修正前後の動作を示すテストを必ず追加この方法の利点は、エージェントがスコープ外のファイルを意図せず変更するリスクを大幅に減らせることです。「hotfix ブランチなのに関係ないリファクタリングをされた」という事故は、個人開発でも時間のロスが大きいです。
実践パターン: 個人開発での3ワークスペース構成
私が日常的に使っているのは「開発・修正・レビュー」の3ワークスペース構成です。
# セットアップスクリプト(プロジェクトルートに置いておく)
#\!/bin/bash
PROJECT_ROOT=$(pwd)
PROJECT_NAME=$(basename "$PROJECT_ROOT")
# 作業用 worktree の作成
setup_worktree() {
local branch=$1
local suffix=$2
local dir="../${PROJECT_NAME}-${suffix}"
if [ -d "$dir" ]; then
echo "✓ ${dir} は既に存在します"
return
fi
# ブランチが存在しなければ作成
git branch "$branch" 2>/dev/null || true
git worktree add "$dir" "$branch"
# 依存関係のインストール(package.json がある場合)
if [ -f "${dir}/package.json" ]; then
cd "$dir" && npm install && cd "$PROJECT_ROOT"
fi
echo "✓ ${dir} をセットアップしました"
}
setup_worktree "develop" "dev"
setup_worktree "hotfix/current" "fix"
echo ""
echo "Antigravity で以下のディレクトリを開いてください:"
echo " 1. ${PROJECT_ROOT} → main(レビュー・マージ)"
echo " 2. ../${PROJECT_NAME}-dev → develop(新機能開発)"
echo " 3. ../${PROJECT_NAME}-fix → hotfix(緊急修正)"ワークスペースごとの役割分担
ワークスペース 1(develop): ここがメインの開発場所。新機能の実装、UI の構築、テストの追加を AI エージェントと協力して進める。Plan Mode を使って大きなタスクを分解し、段階的に実装します。
ワークスペース 2(hotfix): 本番で見つかったバグの修正専用。エージェントには最小限の変更のみを許可する AGENTS.md を設定します。修正が終わったらすぐに main にマージして deploy します。
ワークスペース 3(main): コードレビューとマージの拠点。他の worktree で完了した PR をここで確認し、AI にレビューを依頼します。git log --oneline --all で全ブランチの進行状況を俯瞰できます。
コンフリクトを未然に防ぐ3つのルール
並列開発で最も厄介なのがマージコンフリクトです。以下の3つのルールを守ることで、コンフリクトの発生率を大幅に下げられます。
ルール 1: ファイルの担当を worktree ごとに分離する
# AGENTS.md で変更可能なパスを制限する
# develop worktree
- src/features/ 配下のみ変更可
# hotfix worktree
- src/lib/auth/ 配下のみ変更可同じファイルを2つの worktree で同時に編集しません。これが最も効果的なコンフリクト防止策です。
ルール 2: 共通ファイルの変更は main でのみ行う
package.json、設定ファイル、共通ユーティリティなど複数の機能が依存するファイルは、main ワークスペースでのみ変更します。変更後は各 worktree で git pull origin main --rebase を実行します。
# 各 worktree で定期的に main の変更を取り込む
cd ~/projects/my-app-dev
git fetch origin main
git rebase origin/mainルール 3: 短いサイクルでマージする
worktree を長期間放置すると、main との差分が広がりコンフリクトのリスクが高まる。hotfix は即日マージ、feature は3日以内を目安にします。
worktree のライフサイクル管理
作り放題にすると管理が煩雑になります。使い終わった worktree は速やかに削除します。
# 現在の worktree 一覧を確認
git worktree list
# 出力例:
# /home/user/projects/my-app abc1234 [main]
# /home/user/projects/my-app-dev def5678 [develop]
# /home/user/projects/my-app-fix ghi9012 [hotfix/current]
# マージ済みの hotfix worktree を削除
cd ~/projects/my-app
git worktree remove ../my-app-fix
# ブランチも不要なら削除
git branch -d hotfix/currentAntigravity 側では、削除した worktree のワークスペースも閉じておくこと。存在しないディレクトリを参照したワークスペースはエラーになります。
git-worktree-runner で自動化する
手動のセットアップが面倒なら、git-worktree-runner を使うと worktree の作成から依存関係のインストール、エディタ連携まで一括で処理できます。
# インストール
git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
chmod +x wt.sh
# 新しい worktree を作成(設定ファイルのコピーと npm install も自動実行)
./wt.sh create feature/payment-v2
# Antigravity で自動的にワークスペースとして開く
./wt.sh open feature/payment-v2 --editor antigravityこのツールは .env、.vscode/settings.json などの設定ファイルを自動でコピーしてくれるため、worktree ごとに環境設定をやり直す手間がありません。
Before/After: stash ワークフローとの比較
Before(従来の stash ワークフロー):
- 作業中のコードを
git stash— 未保存の変更があると stash が複雑化 git checkout hotfix— ブランチ切り替えnpm install— 依存関係が異なれば再インストール(数十秒〜数分)- バグ修正 → コミット → プッシュ
git checkout feature— 元のブランチに戻るgit stash pop— stash の衝突が起きることもnpm install— また再インストール
所要時間: 10〜15分(作業の中断 + 復帰のオーバーヘッド)
After(worktree + Antigravity ワークフロー):
- Agent Manager で hotfix ワークスペースをクリック
- バグ修正を指示 → エージェントが修正 → コミット → プッシュ
- 開発ワークスペースに戻って作業を継続
所要時間: 2〜3分(ワークスペース切り替えのみ。stash なし、npm install なし)
コンテキストスイッチのコストがほぼゼロになるのが最大の利点です。特に、AI エージェントが各ワークスペースで独立した会話履歴を保持するため、「さっきまで何をしていたか」を再説明する必要もありません。
注意点: 同一ブランチを複数 worktree で開かない
git worktree には「同一ブランチを2つ以上の worktree で同時にチェックアウトできない」という制約があります。
# これはエラーになる
git worktree add ../my-app-2 main
# fatal: 'main' is already checked out at '/home/user/projects/my-app'この制約は安全装置として機能しています。同じブランチを2箇所で編集すると、どちらのコミットが正しいか分からなくなるためです。ブランチを共有したい場合は、一方を新しいブランチにして作業後にマージする設計にすること。
全体を振り返って: 次にやること
git worktree add を1つ試してみること。既存のプロジェクトで hotfix ブランチ用の worktree を1つ作り、Antigravity の別ワークスペースとして開くだけでいい。stash に戻れなくなるはずです。
プロジェクト固有のルールを AGENTS.md で worktree ごとに設定する方法は、Antigravity のコンテキスト制御テクニックで詳しく解説しています。コンフリクトが発生した場合の AI アシスト解決法は、git コンフリクト AI 解決ガイドを参照してほしい。
並列開発のスケーリングに興味があるなら、Antigravity のワークスペース最適化テクニックも合わせて読むと、ワークスペースの管理がさらに効率化できます。