Claude Code を複数並列で動かす方法 — git worktree 入門

· DobbyLab · claude-codegit-worktreeparallel-agents

同じリポジトリで Claude Code を複数並列に動かすなら、セッションごとに git worktree を 1 つずつ用意するのが確実です。worktree は同じ .git の履歴を共有しながら、別のブランチをチェックアウトした独立した作業ディレクトリです。git worktree add ../myapp-fix-login -b fix-login で作成し、その中で claude を起動する。これをタスクの数だけ繰り返せば、各 AI は互いのファイルを上書きすることなく、並行して編集・ビルド・テストを進められます。

考え方はこれだけです。本記事では、実際に入力するコマンド、最初の 1 週間でつまずきやすい点、そして gtree がその繰り返し作業をどう肩代わりするかを説明します。

同じフォルダで Claude Code を 2 つ開くだけではだめなのですか?

開くこと自体はできますし、質問するだけなら問題ありません。しかし両方のセッションがファイルを編集し始めると、隔離のない 1 つの作業ディレクトリを共有することになります。

  • セッション A が auth.ts を書き換えた直後に、古い内容を読んだままのセッション B がもう一度書き換える。
  • A の作業途中の変更でビルドが壊れ、B が実行するテストは原因不明のまま失敗し続ける。
  • コミットするときには、2 つのタスクの変更が 1 つの diff に混ざってしまう。

ブランチだけでは解決できません。1 つのフォルダでチェックアウトできるブランチは同時に 1 つだけだからです。worktree なら、それぞれが専用のブランチ・未コミットの変更・ビルド成果物を持つ実ディレクトリになり、コミットやブランチ、リモートはすべて共有されます。

Claude Code 用に git worktree をセットアップするには?

メインのチェックアウトの中で次を実行します。

# 1. リポジトリの隣に worktree を作成し、新しいブランチを切る
git worktree add ../myapp-fix-login -b fix-login

# 2. その中で Claude Code を起動
cd ../myapp-fix-login
claude

別のターミナルを開き、次のタスクでも同じことをします。

git worktree add ../myapp-search -b search-box
cd ../myapp-search
claude

よく使うコマンドは次のとおりです。

コマンド 内容
git worktree list すべての worktree のパス・コミット・ブランチを表示
git worktree add <パス> -b <新ブランチ> 新しいフォルダと新しいブランチを作成
git worktree add <パス> <既存ブランチ> 既存ブランチを新しいフォルダにチェックアウト
git worktree remove <パス> worktree を削除(未コミットの変更があると拒否。--force で強制)
git worktree prune 手動で消したフォルダの worktree 記録を掃除

タスクが終わったら、いつもどおりマージするか MR / PR を作成し、worktree を削除します。

git worktree の注意点は?

ほとんどの手間は「新しい worktree には git が追跡しているファイルしかない」ことから来ます。

  1. 依存関係は入っていません。 node_modules、target/、.venv などは .gitignore 対象なので、worktree ごとにインストールやビルドが必要です。ディスク容量と初回ビルドの時間を見込んでおきましょう。
  2. ローカル設定もありません。 .env など無視されている設定ファイルは、各 worktree にコピーするかシンボリックリンクを張ります。
  3. 1 つのブランチは 1 つの worktree でしかチェックアウトできません。 「すでにチェックアウトされている」と言われたら、新しいブランチを作ります。
  4. ポートが衝突します。 2 つの worktree から dev サーバーを起動すると同じポートを取り合うので、片方を変えます。
  5. フォルダが溜まります。 rm -rf でフォルダを消しても git は覚えているので、git worktree prune を実行します。

どれも致命的ではありませんが、毎回意識しておく必要があります。

本当の課題は 5 つのターミナルを把握し続けること

環境が整うと、今度は別の問題が出てきます。5 つのエージェントを 5 つのターミナルタブで動かすと、

  • どれが承認待ちなのか、タブを全部めくるまでわかりません。
  • どれが作業を終えてレビュー待ちなのかもわかりません。
  • どの worktree がどのブランチで、main からどれだけ離れているのか、だんだん追えなくなります。
  • 2 つのエージェントが別々の worktree で同じファイルを編集していても、マージするまで気づけません。

tmux のようなツールでウィンドウは整理できますが、中のエージェントが何をしているかまではわかりません。その層を補うのが gtree です。

gtree で複数の Claude Code を管理する

gtree は worktree を中心に設計された macOS ネイティブアプリで、Claude Code と Codex に対応しています(最初に対応し、連携がもっとも深いのは Claude Code)。リポジトリを開くと、コマンドラインで作ったものも含め、すべての worktree がサイドバーのプロジェクトの下に並びます。どれかをクリックすると、その worktree のホームが開きます。セッションがあれば会話、なければその worktree のスタートページで、次に何をすればいいかが書かれています。

worktree の作成: サイドバーの worktree を右クリックして「新規 worktree…」を選び、ブランチ名を入力します。gtree が git worktree add を実行し、リポジトリの隣に「<リポジトリ名>-<ブランチ名>」のフォルダを作ります。「worktree を削除…」も同じメニューにあり、確認つきで実行されます。ブランチがマージ済みなら、スタートページに「worktree を削除」ボタンが直接出ます。

エージェントの起動: スタートページで「Claude Code を新しく開く」をクリックするか、⌘T を押します(Codex をインストールしていれば、どちらを使うか選べます)。gtree の内蔵ターミナルで動くのは本物のエージェント CLI で、iTerm で使う Claude Code や Codex とまったく同じです。スラッシュコマンド、plan mode、承認プロンプト、MCP もそのまま使えます。同じ worktree でセッションを複数開くこともできます。見るためにクリックしただけでは、セッションが勝手に起動することはありません。

全セッションをひと目で: 設定で Claude Code(または Codex)に接続すると、サイドバーの各 worktree の行末に状態マークが 1 つだけ付きます。紫のアイコンが回転していればエージェントが作業中、赤いベルが点滅していればあなたの応答待ちです。ホバーすると詳細が出ます。文字を読まなくても、赤いベルを探すだけで済みます。詳しくは次の記事で紹介します。

ブランチの状態: スタートページには、対応が必要なことだけが 1 行ずつ、それぞれのボタンと一緒に並びます。

スタートページの表示 ボタン
このブランチはマージ済みです worktree を削除 / 新しいブランチで始める
N 件のファイルが別の場所でも変更されています どれか見る
未コミットのファイルが N 件あります 変更を見る
リモートに新しいコミットが N 件あります プル
未プッシュのコミットが N 件あります プッシュ
リベース後、リモートのこのブランチと食い違っています プッシュ(リモートを上書き)
MR #N · 未マージ / MR はまだありません MR を開く / MR を作成
main より N コミット遅れています main にリベース

やることがなければ「最新です」と表示されます。サイドバーでは各ブランチの後ろに MR の状態も出ます。MR が開いている間は MR アイコン、マージ後は薄いマージアイコンです。情報はすでにログイン済みの glab または gh から取るので、GitHub でも GitLab(セルフホスト含む)でも使えます。Git の操作一式(コミット、プル、プッシュ、リベース、ブランチ切り替えなど)は右クリックメニューにあり、書き込みはすべて Mac 上の git を通すので SSH キーや hook もそのまま効きます。全ブランチの全体像は「コミット履歴」(⌘3)で確認でき、ブランチごとのレーンにチェックアウト先の worktree 名が付きます。

変更の確認: スタートページの「変更を見る」で、中央に差分が開きます。左に変更ファイル、右に内容です。マージ前にブランチ全体をレビューしたいときは、「コミット履歴 › 比較」が最初から「メインブランチ → 現在の worktree」で開くので、git diff を打つ必要はありません。

衝突の事前通知: 2 つの worktree が同じファイルを変更すると、(その行にセッションの状態アイコンが出ていなければ)サイドバーの行末に琥珀色の △ が付き、スタートページには必ず他の場所でも変更されているファイル数が出ます。「どれか見る」で一覧できます。どちらもまだコミットしていない場合は、「対応待ち」の「念のため確認」にも表示されます。同じ worktree の中ではさらに一歩進みます。2 つのエージェントが同じファイルを編集しようとすると、お互いの存在を知らされ、伝言を残し合って先にどちらが変更するかを決められます。詳しくは2 つの AI エージェントが同じファイルを編集するときで説明します。

手作業と gtree の比較

ターミナル + git gtree
worktree の作成 git worktree add ../x -b x 右クリック →「新規 worktree…」
エージェントの起動 新しいタブで cd + claude スタートページ → 新しいセッション(⌘T)
あなた待ちはどれ? タブを全部確認 サイドバーのベル + 通知
ブランチの状態 フォルダごとに git status / git log スタートページ + サイドバーの行末マーク
同じファイルの二重編集 マージ時に発覚 両方が変更した時点でマーク

5 セッションまで無理なく回せるワークフロー

  1. メインフォルダは main(またはデフォルトブランチ)のままにし、AI には作業させない。
  2. 1 タスク = 1 worktree = 1 ブランチ。ブランチ名はタスクに合わせる。
  3. 各エージェントへのプロンプトで、担当するファイルや範囲を明確にする。
  4. マージ前に main と比較してレビューし、終わったら worktree を削除する。
  5. こまめにマージする。ブランチが長生きするほど差分は広がります。

よくある質問

Claude Code はいくつまで同時に動かせますか?

git 側に上限はありません。実際にはあなたの注意力、マシン性能(worktree ごとに依存関係やビルドが必要な場合があります)、ご利用のプランの利用上限で決まります。

git worktree とブランチの違いは?

ブランチはコミットの流れで、worktree はブランチをチェックアウトしたフォルダです。1 つのフォルダには一度に 1 つのブランチしかチェックアウトできません。worktree を使えば、それぞれ別のブランチをチェックアウトした複数のフォルダを持てて、履歴はすべて共有されます。

worktree はディスクを大量に使いますか?

git の履歴は共有されるため、増えるのはチェックアウトされたファイルと、その中でインストール・ビルドしたものだけです。多くの場合 node_modules のような依存フォルダがいちばん大きくなります。

gtree がないと worktree で Claude Code を使えませんか?

いいえ。上記はすべて git とターミナルだけで動きます。gtree が省くのは、worktree の作成、待っているセッション探し、編集の重なりの発見といった細かな作業です。

gtree は Claude Code の代わりになりますか?

なりません。gtree は内蔵ターミナルで本物のエージェント CLI(Claude Code または Codex)を動かし、その状態を読み取るだけです。Claude Code の設定やサブスクリプションはそのままです。

gtree のローカル機能は無料で、登録も不要です。gtree があなたのコードをアップロードすることはありません。こちらからダウンロードして、作業中のリポジトリを開いてみてください。既存の worktree がサイドバーに並んでいるはずです。

この記事は gtree 0.3.14 に合わせて更新しました(2026 年 10 月)。