git worktreeとは?使い方とAIエージェントを並列で動かす方法

Claude Codeにお問い合わせフォームの修正を頼んでいる間に、料金ページの表記修正も別のAIに進めてほしい場面があります。1つのフォルダで2つのAIを同時に動かすと、片方の書きかけの変更がもう片方の作業に混ざり、どちらの修正なのか見分けられなくなります。
混ざる原因はAIの性能ではなく、1つの作業フォルダを2つのAIで取り合っている状態です。この記事では、git worktreeの仕組みと基本コマンドやつまずきやすい点を押さえたうえで、Claude Code・Codexを並列で動かす手順と並列ツールの選び方を解説します。記事を読めば、2つの作業をAIに同時に任せる準備が整います。AIを並列で動かす土台は、作業1件ごとにworktreeを1つ用意することです。
git worktreeとは1つのリポジトリで作業フォルダを複数持てるGitの機能
git worktreeは、1つのリポジトリ(ファイルと変更履歴のまとまり)に作業フォルダを複数持たせるGitの標準機能です。Git 2.5から搭載されていて、追加のツールは要りません。git worktree公式ドキュメント、Git 2.5のリリースノート
git worktreeを理解するために押さえたい点は、以下の3つです。
- ブランチを切り替えずに別の作業を同時に進められる
- git worktreeとブランチ・cloneの違い
- 同じブランチは2つのworktreeで同時に使えない
ブランチを切り替えずに別の作業を同時に進められる
git worktreeを使うと、ブランチごとに別の作業フォルダを開き、複数の作業を同時に進められます。通常のGitでは作業フォルダが1つしかないため、別のブランチへ移るたびに書きかけの変更のコミットか、一時的な退避(stash)が必要です。
Gitでは、最初からある作業フォルダを「main worktree」、増やした作業フォルダを「linked worktree」と呼びます。どちらも同じリポジトリの変更履歴を使うため、1つのフォルダで作ったコミットを別のフォルダからすぐに参照できる仕組みです。git worktree公式ドキュメント
AIエージェントにとっての利点は、AIごとに専用の作業フォルダを渡せることです。Claude Codeが編集するフォルダとCodexが編集するフォルダを分ければ、同時に動かしても書きかけのファイルは混ざりません。Claude Codeのworktreeドキュメント
git worktreeとブランチ・cloneの違い
ブランチは変更履歴の分かれ道で、worktreeはブランチを広げて作業する机にあたります。リポジトリを丸ごと複製するgit cloneでも作業フォルダは増やせますが、履歴の持ち方が異なります。
3つの方法の違いは、以下の表のとおりです。
| 項目 | ブランチの切り替えだけ | git worktree | git cloneで複製 |
|---|---|---|---|
| 作業フォルダ | 1つの中身を入れ替える | ブランチごとに増やせる | 複製ごとに増える |
| 変更履歴(.git) | 1つ | 全フォルダで共有 | 複製ごとに別々 |
| 同時の作業 | できない | できる | できる |
同じブランチは2つのworktreeで同時に使えない
Gitは、ほかのworktreeで開いているブランチを新しいworktreeで開こうとすると、作成を断ります。ブランチは最新のコミットを指す1本の目印で、2つのフォルダから同時に進めると整合性が崩れるためです。git worktree公式ドキュメント、Codexのworktreeドキュメント
片方のフォルダでコミットするとブランチは先へ進みますが、もう片方のフォルダのファイルは古いまま残ります。古いファイルのままコミットすると、直前の変更を取り消してしまう恐れがあります。
回避策は、worktreeごとに新しいブランチを作ることです。中身を見るだけなら、git worktree add -d <フォルダ>でブランチに属さない状態(detached HEAD)のworktreeを作れます。--forceで制限を外すこともできますが、AIの並列作業では使わない運用が安全です。
git worktreeの基本コマンドと使い方
git worktreeの操作は、すべて「git worktree」に続くサブコマンドで行います。主なサブコマンドは、以下の表のとおりです。git worktree公式ドキュメント
| コマンド | できること |
|---|---|
| git worktree add | 新しい作業フォルダを作る |
| git worktree list | 作業フォルダの一覧を表示する |
| git worktree remove | 作業フォルダを削除する |
| git worktree prune | 手で消したフォルダの記録を掃除する |
| git worktree repair | 移動で切れた記録をつなぎ直す |
日常の作業でよく使うのは、次の4つです。
- git worktree addで作業フォルダとブランチを作る
- git worktree listで作業フォルダの一覧を確認する
- git worktree removeで終わった作業フォルダを片付ける
- git worktree pruneで消えたフォルダの記録を掃除する
git worktree addで作業フォルダとブランチを作る
新しい作業を始めるときは、-bオプションでブランチと作業フォルダを同時に作ります。お問い合わせフォームの修正用にgit worktree add -b fix/contact-form ../site-contact-formを実行すると、今いるブランチの最新コミットを起点にブランチ「fix/contact-form」と作業フォルダ「site-contact-form」ができます。
git worktree addの主な書き方は、以下のとおりです。
- 新しいブランチで始める:
git worktree add -b <ブランチ名> <フォルダ> - 既存のブランチを開く:
git worktree add <フォルダ> <ブランチ名> - フォルダ名と同じ名前のブランチを自動で作る:
git worktree add <フォルダ>
作業フォルダは、元のリポジトリの外(隣のフォルダなど)に置くと管理しやすくなります。リポジトリの中に置くと、元のフォルダで未追跡のファイルとして表示されるためです。Claude Codeを使う場合は、Claude Codeがworktreeを作る.claude/worktrees/を.gitignoreに加えておきます。Claude Codeのworktreeドキュメント
git worktree listで作業フォルダの一覧を確認する
git worktree listを実行すると、作業フォルダの場所・最新コミット・ブランチ名が1行ずつ表示されます。AIを複数動かしているときに、どのフォルダがどのブランチかを確かめる基本の操作です。git worktree公式ドキュメント
git worktree removeで終わった作業フォルダを片付ける
作業が終わったworktreeは、git worktree remove ../site-contact-formのようにフォルダを指定して削除します。削除できるのは、変更も未追跡のファイルも残っていないworktreeだけです。コミットしていない変更があるとGitは削除を断り、変更を捨ててよい場合に限って--forceで削除できます。最初からある作業フォルダ(main worktree)は削除できません。git worktree公式ドキュメント
worktreeを削除しても、ブランチは残ります。マージ済みで不要になったブランチは、git branch -d fix/contact-formで別に削除しましょう。
git worktree pruneで消えたフォルダの記録を掃除する
Gitを通さずにworktreeのフォルダを消すと、リポジトリの中に記録だけが残ります。git worktree pruneは、フォルダがなくなったworktreeの記録を削除するコマンドです。worktreeの移動はgit worktree moveで行い、手で動かして記録が切れたときはgit worktree repairでつなぎ直します。git worktree公式ドキュメント
git worktreeでつまずきやすい注意点
git worktreeは作業フォルダを増やすだけの機能です。つまずきやすい点は、以下の4つです。
- .envやnode_modulesは新しいworktreeに入っていない
- 開発サーバーのポート番号がぶつかる
- submoduleを使うリポジトリでは動作が不完全
- worktreeはAIの操作範囲を制限しない
.envやnode_modulesは新しいworktreeに入っていない
新しいworktreeに入るのは、Gitで管理されているファイルだけです。.gitignoreで管理対象から外した.env(接続先やAPIキーを書く設定ファイル)やnode_modules(npm installで入る依存ライブラリ)は、元のフォルダにあってもコピーされません。
依存ライブラリは、作業フォルダごとにインストールし直します。.envは手でコピーするか、Claude Code・Codex・Orcaが対応する.worktreeincludeに対象を書き、worktreeの作成時に自動でコピーさせます。.worktreeincludeはGit本体ではなく各ツールの機能で、書式は.gitignoreと同じです。Claude Codeのworktreeドキュメント、Codexのworktreeドキュメント、Orcaのworktreeドキュメント
本番環境の認証情報を含む.envは、AI用のworktreeへコピーしない運用が安全です。コピーした数だけ、秘密の情報を置く場所が増えてしまいます。
開発サーバーのポート番号がぶつかる
2つのworktreeで開発サーバーを起動すると、同じポート番号(アプリを開く窓口の番号)を取り合います。1つのポート番号は1つのプログラムしか使えないので、2つ目の起動が失敗する場合があります。表示の確認を並べるときは、worktreeごとにポート番号を変えて起動しましょう。
submoduleを使うリポジトリでは動作が不完全
Gitの複数の作業フォルダの機能はまだ実験的な扱いで、submodule(別のリポジトリを部品として組み込む仕組み)への対応は不完全です。submoduleを含むリポジトリで複数のworktreeを作る使い方は推奨されていません。git worktree公式ドキュメント
worktreeはAIの操作範囲を制限しない
worktreeで分かれるのは作業ファイルだけで、AIがパソコンのほかのフォルダや外部のサービスにアクセスできる状態は変わりません。AIの操作確認の省略を既定にした並列ツールもあるため、AIに許可する操作の範囲は各AIの権限設定で決めます。VS Codeのworktreeに関する注意、Orcaの対応エージェントと権限
git worktreeでClaude Code・Codexを並列で動かす手順
例として、会社のWebサイトのリポジトリ「site」で2つの修正を同時に任せる場面を考えます。担当は、お問い合わせフォームの修正がClaude Code、料金ページの表記修正がCodexです。Claude CodeとCodexの始め方は、Claude Codeの使い方とCodex CLIの使い方で解説しています。
並列で動かす流れは、以下の2段階です。
- 作業ごとにworktreeを作ってAIを起動する
- AIの変更を確認してmainにまとめる
作業ごとにworktreeを作ってAIを起動する
AIを起動する前に、作業1件につき1つのworktreeを用意します。お問い合わせフォームと料金ページの2件を並べる手順は、以下のとおりです。
- siteフォルダで
git switch mainとgit pullを実行し、mainを最新の状態にそろえる git worktree add -b fix/contact-form ../site-contact-formでフォーム修正用のworktreeを作るgit worktree add -b fix/pricing-text ../site-pricing-textで料金ページ用のworktreeを作る- 1つ目のターミナルで
cd ../site-contact-formを実行し、依存ライブラリと.envを用意してclaudeを起動する - 2つ目のターミナルで
cd ../site-pricing-textを実行し、同じ準備をしてcodexを起動する - それぞれのAIに依頼を書き、作業を任せる
Claude Codeはsite-contact-formの中だけを、Codexはsite-pricing-textの中だけを編集するので、書きかけの変更は混ざりません。
AIの変更を確認してmainにまとめる
AIが作業を終えたら、各worktreeでgit diffを実行して変更点を確かめ、問題がなければworktreeの中でコミットします。mainへまとめるときは、チームでレビューを受けるならブランチをpushしてプルリクエストを作ります。1人で管理するリポジトリなら、siteフォルダでgit merge fix/contact-formとgit merge fix/pricing-textを順に実行すれば完了です。
2つのAIが同じファイルの同じ箇所を変えていた場合は、2本目のマージで衝突(コンフリクト)が起きます。衝突を避けるには、フォームと料金ページのように触るファイルが重ならない作業を組み合わせるのが近道です。まとめ終えたworktreeはgit worktree removeで削除し、ブランチもgit branch -dで片付けます。
同時に動かすAIの数は、人が差分を確認できる量に合わせて決めます。最初は2つの作業から始め、確認が追いつくと分かってから3つ目を足す進め方がおすすめです。
Claude Codeのworktree機能(--worktree)の使い方
Claude Codeには、worktreeを作ってからセッションを始める機能があります。主な使い方は、以下の3つです。
- claude --worktreeでworktreeを作ってClaude Codeを起動する
- 終了時にworktreeを残すか削除するかを選ぶ
- サブエージェントも別々のworktreeで動かせる
claude --worktreeでworktreeを作ってClaude Codeを起動する
claude --worktree fix-contact-form(短縮形は-w)を実行すると、リポジトリ直下の.claude/worktrees/fix-contact-form/にworktreeができ、その中でClaude Codeが起動します。ブランチ名は「worktree-fix-contact-form」です。別のターミナルで名前を変えて同じコマンドを実行すれば、2つ目の独立したセッションを始められます。
新しいworktreeの起点は、既定ではリモートの既定ブランチ(通常はmain)です。Claude Codeのworktreeは既存のコミットから作るため、コミットが1つもないリポジトリでは使えません。
新しいworktreeには依存ライブラリや.envが入っていないため、Claude Codeにインストールを頼むか、.worktreeincludeを用意しておきましょう。デスクトップアプリでは、セッションの開始時にworktreeのオプションを選びます。Claude Codeのworktreeドキュメント、Claude Codeのよく使うワークフロー
終了時にworktreeを残すか削除するかを選ぶ
worktreeのセッションを終了すると、Claude Codeはworktreeに変更や新しいコミットが残っていないかを確認します。変更がなく名前も付けていないセッションなら、worktreeとブランチは自動で削除されます。変更が残っている場合に出るのは、worktreeを残すか削除するかの確認です。
残したworktreeに戻るときは、終了時に表示されるclaude --worktree <名前> --resumeを実行します。Claude Codeのworktreeドキュメント
サブエージェントも別々のworktreeで動かせる
Claude Codeが作業を分担させるサブエージェントも、それぞれ専用のworktreeで動かせます。会話の中で「エージェントごとにworktreeを使って」と頼むか、カスタムのサブエージェントの定義に「isolation: worktree」を書くと、専用のworktreeで動くようになります。Claude Codeのworktreeドキュメント
サブエージェントの基本を解説した記事は、Claude Codeのサブエージェントです。
AIエージェントを並列で動かすツールの選び方
git worktreeを手で使う方法のほかに、worktreeの作成をツールに任せる方法もあります。ツールの選び方と各ツールの特徴は、以下のとおりです。
- 目的に合わせて並列ツールを選ぶ
- CodexはChatGPTアプリでWorktreeを選ぶ
- Orcaは作業ごとにworktreeを自動で作る
- cmuxはworktreeを自分で組み立てるターミナル
- OpenCodeなどほかのAIもworktreeで並列にできる
目的に合わせて並列ツールを選ぶ
並列ツールを選ぶときの分かれ目は、worktreeを誰が作り、複数のAIをどの画面で見るかです。主な方法の違いは、以下の表のとおりです。
| 方法 | worktreeを作るのは | 対応OS | 向いている人 |
|---|---|---|---|
| git worktreeを手で使う | 自分 | Gitが動く環境 | 自由に組み立てたい人 |
| Claude Codeの--worktree | Claude Code | Claude Codeが動く環境 | Claude Codeだけで並列にしたい人 |
| ChatGPTアプリのCodex | Codex | macOS・Windows | 画面の操作でCodexを並列にしたい人 |
| Orca | Orca(作業ごとに自動) | macOS・Windows・Linux | 複数のAIを1つの画面で管理したい人 |
| cmux | 自分かAI | macOS | ターミナル中心で組み立てたい人 |
Claude CodeだけならClaude Codeの--worktree、CodexだけならChatGPTアプリのWorktreeで足ります。Claude CodeとCodexを混ぜて使い、進み具合を1つの画面で見たいならOrcaが候補です。Macでターミナル操作に慣れた人は、cmuxと手作業のworktreeの組み合わせも選べます。
CodexはChatGPTアプリでWorktreeを選ぶ
Codexのアプリは、2026年7月9日にmacOSとWindows向けのChatGPTデスクトップアプリへ統合されました。新しいチャットを始めるときに入力欄の下で「Worktree」を選び、起点のブランチを選ぶと、Codexがworktreeを作って作業します。Codexの手引き、Codexのworktreeドキュメント
Codexのworktreeはブランチに属さない状態(detached HEAD)で始まるため、試しに作ってもブランチは増えません。残したい変更は、チャット上部の「Create branch here」でブランチにできます。Codexが管理するworktreeは既定で新しい順に15個まで残り、古いものから自動で削除される設定です。Codexのworktreeドキュメント
WindowsでのCodexの導入は、CodexのWindowsアプリで解説しています。
Orcaは作業ごとにworktreeを自動で作る
Orcaは、複数のAIコーディングエージェントを並べて動かすための、無料でオープンソースのデスクトップアプリです。macOS・Windows・Linuxに対応し、作業1件ごとに専用のworktree・AIのターミナル・ブラウザのタブを自動で用意します。Orca公式ドキュメント
編集部が2026年9月26日にOrca v1.4.210で試したところ、リポジトリ名の横の「+」から「ワークツリーを作成する」画面を開き、作成元(main)・名前・起動するAIを選ぶだけでworktreeができました。Orcaのworktreeドキュメント
Orcaの仕組みはOrcaとはで、操作はOrcaの使い方で解説しています。導入を判断する材料はOrcaのメリット・デメリットに、エディタとの違いはOrcaとCursorの比較とOrcaとVS Codeの比較にまとめました。
cmuxはworktreeを自分で組み立てるターミナル
cmuxは、AIからの確認待ちを通知で知らせる、AIコーディングエージェント向けのmacOS用ターミナルです。cmuxにはworktreeを自動で作る機能がなく、開発元は「worktreeを全員に押し付けたくない」として今後も追加しない方針を示しています。worktreeは、自分で書いたスクリプトやAIへの依頼で作る前提です。cmuxのGitHub、cmux home
cmuxの機能はcmuxとはで、Orcaとの選び分けはcmuxとOrcaの違いで解説しています。
OpenCodeなどほかのAIもworktreeで並列にできる
git worktreeはGitの機能なので、Claude CodeやCodex以外のAIエージェントもworktreeのフォルダで起動すれば、編集をworktreeの中に収められます。
OpenCodeは、ターミナル・デスクトップアプリ・IDE拡張機能で使えるオープンソースのAIコーディングエージェントで、本体は無料です。同じプロジェクトで複数のエージェントを並行して動かす使い方にも対応しています。OpenCode公式サイト
OpenCodeの特徴はOpenCodeとはで、モデルの利用料を定額にするプランはOpenCode Goで解説しています。
git worktreeはAIエージェントを並列で動かす土台になる
git worktreeは、1つのリポジトリに作業フォルダを複数用意し、ブランチを切り替えずに別々の作業を同時に進めるGitの機能です。AIごとに専用のworktreeを渡せば、Claude CodeとCodexを同時に動かしても変更は混ざりません。
使い始める前に押さえたいのは、同じブランチを2つのworktreeで開けない点と、.envや依存ライブラリが新しいworktreeにない点です。
git worktreeを初めて試すときの手順は、以下のとおりです。
- 検証用のリポジトリで
git worktree add -bを使い、作業用のworktreeを2つ作る - 各worktreeで依存ライブラリと.envを用意する
- 片方でClaude Code、もう片方でCodexを起動して、別々のファイルの修正を依頼する
git diffで変更を確認し、mainへまとめてからgit worktree removeで片付ける
2つの作業を混ぜずに最後まで回せたら、Orcaなどの並列ツールで作業の数を増やしてみましょう。



