Claude Code と git worktree で複数タスクを並列に進める手順

Claude Code 公開:

git worktree を使って Claude Code のセッションを複数同時に走らせる方法を解説します。worktree の作り方、各セッションの起動、依存関係とポート競合の回避、作業後の統合と後片付けまでの手順をまとめます。

検証日 2026年9月7日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. git worktree とは
  2. 各 worktree で Claude Code を起動する
  3. 競合しやすいポイントと対策
  4. 作業を統合する
  5. worktree の後片付け
  6. 並列作業の設計のコツ
  7. まとめ

Claude Code は 1 セッションで 1 つのタスクを進めるのが基本です。「機能 A の実装」と「バグ B の修正」を同時に頼むと、同じ作業ディレクトリ上で変更が混ざり、差分の切り分けが難しくなります。

そこで使うのが git worktree です。1 つのリポジトリから複数の作業ディレクトリを作り、それぞれで別のブランチをチェックアウトして、Claude Code を別々に起動します。この記事では、その手順と落とし穴をまとめます。

KEY POINT

この記事で分かること

  • git worktree の作り方と Claude Code の起動手順
  • 依存関係、ポート、環境変数の競合を避ける方法
  • 作業後のブランチ統合と worktree の削除

git worktree とは

通常、1 つのリポジトリには 1 つの作業ディレクトリしかありません。git worktree add を使うと、同じ .git を共有する作業ディレクトリを追加できます。各 worktree は別のブランチをチェックアウトしており、互いのファイル変更は影響しません。

git worktree add ../myapp-feature-a -b feature/a
git worktree add ../myapp-fix-b -b fix/b

これで ../myapp-feature-a../myapp-fix-b という 2 つのディレクトリができ、それぞれ feature/afix/b ブランチになっています。

用語解説

worktree の配置場所: リポジトリの隣(../)に置くのが一般的です。リポジトリ内部(例: .worktrees/)に置く場合は .gitignore に追加し、Claude が誤って別 worktree のファイルを読まないようにします。

各 worktree で Claude Code を起動する

ターミナルを worktree の数だけ開き、それぞれで claude を起動します。

# ターミナル 1
cd ../myapp-feature-a
npm install
claude

# ターミナル 2
cd ../myapp-fix-b
npm install
claude

CLAUDE.md や .claude/settings.json はリポジトリの内容なので、各 worktree でも同じものが読み込まれます。.claude/settings.local.jsonCLAUDE.local.md は Git 管理外のため、必要なら手でコピーします。

VS Code 拡張で使う場合は、worktree ごとに別ウィンドウで開きます。ワークスペースが異なれば、サイドパネルの Claude も独立します。

競合しやすいポイントと対策

競合症状対策
開発サーバーのポート2 つ目の npm run dev が起動失敗PORT=3001 npm run dev のように worktree ごとにポートを変える
データベース両方が同じローカル DB を変更DB 名を環境変数で分ける、または片方は DB を使わない作業にする
.envGit 管理外なので新しい worktree に存在しない元の worktree からコピーし、ポートや DB 名を書き換える
ビルドキャッシュ共有キャッシュを使うツールで不整合.nextdist などが worktree ごとに独立していることを確認する
Claude のセッション履歴--resume で別 worktree の履歴が出るセッションは作業ディレクトリ単位で保存されるため、正しいディレクトリで再開する

同じブランチを 2 つの worktree でチェックアウトできない

git は 1 つのブランチを複数の worktree で同時にチェックアウトすることを拒否します。main で作業中の worktree があるなら、新しい worktree は必ず別ブランチにしてください。

作業を統合する

各 worktree の作業が終わったら、通常のブランチ運用と同じです。

# feature/a の worktree でコミット済みとする
cd ../myapp            # 元のディレクトリ
git checkout main
git merge feature/a    # または PR を作成
git merge fix/b

PR を作る場合は、各 worktree から git push -u origin feature/a のように push します。Claude に「PR を作って」と頼めば、その worktree のブランチで作成されます。

worktree の後片付け

git worktree list                   # 一覧
git worktree remove ../myapp-fix-b  # ディレクトリごと削除
git branch -d fix/b                 # マージ済みならブランチも削除
git worktree prune                  # 手で消したディレクトリの登録を掃除

削除を忘れると、ディスク容量とブランチ一覧が散らかります。マージのたびに消す習慣をつけてください。

並列作業の設計のコツ

  • タスクを独立させる: 同じファイルを両方が触るタスクを並列にすると、マージ時に衝突します。先に Plan Mode で影響範囲を洗い出してから分けます。
  • 2〜3 並列まで: 人間が確認できる量には限りがあります。並列数を増やしても、レビューが追いつかなければ品質は下がります。
  • サブエージェントとの使い分け: 1 つのタスク内での並列(調査を複数の観点から同時に行うなど)は、worktree より サブエージェント が向いています。

まとめ

  • git worktree add ../dir -b branch で作業ディレクトリを増やし、各ディレクトリで claude を起動する
  • 依存関係のインストール、ポート、.env は worktree ごとに用意する
  • 同じブランチは 2 か所でチェックアウトできない
  • 作業後は git worktree removegit branch -d で片付ける

よくある質問

git worktree と git clone を複数回するのは何が違いますか?
worktree は 1 つのリポジトリ(.git)を共有したまま作業ディレクトリだけを増やします。clone を繰り返すより容量が小さく、ブランチやスタッシュも共有されます。
各 worktree で npm install は必要ですか?
必要です。node_modules は作業ディレクトリごとに存在するため、worktree を作るたびに依存関係をインストールします。
Claude Code に worktree を作らせることはできますか?
対話中に git worktree add を実行させることは可能です。近年のバージョンでは worktree 用の起動オプションも提供されているので、claude --help で確認してください。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。