Claude Code git worktreeで並列開発を加速する完全ガイド【2026年最新】:--worktreeフラグ・subagent連携・クリーンアップまで徹底解説
室谷今回はgit worktreeの話をしましょう。これ、Claude Codeのユーザーでも意外と使ってない人が多いんですよね・・・
テキトー教師.AI(ドットエーアイ)のコミュニティのメンバーさんからも「並列で作業したいけどどうするの?」っていう質問が結構来ますね。git worktreeの存在は知っていても、Claude Codeと組み合わせてどう使うかがわからない、という方が多い印象です。
室谷MYUUUでも全プロジェクトでworktreeを使ってますが、導入前と後で開発スピードが体感で倍くらい変わりました。特に「フィーチャー開発しながらバグ修正も走らせる」っていうパターンが当たり前になってきて。
テキトー教師講座で教えていて気づいたんですが、worktreeを使うと「コードが衝突する心配なく複数タスクを並列で進められる」って感覚が掴めたとき、受講生さんの開発の仕方が一気に変わるんですよ。それまでは直列でしか考えられなかったのに。
室谷まさに。git worktreeは「同じリポジトリから複数の作業ディレクトリを作る」仕組みなんですよね。
それをClaude Codeが
それをClaude Codeが
--worktreeフラグで直接サポートするようになって、使い方がかなりシンプルになった。git worktreeとは?Claude Codeでなぜ重要か
テキトー教師改めて整理すると、git worktreeはGit標準の機能で、1つのリポジトリから複数の「作業ツリー」を同時に展開できる仕組みです。通常、1つのリポジトリでは1つのブランチしか同時にチェックアウトできませんが、worktreeを使うと複数のブランチを別々のディレクトリで同時に扱えます。
室谷Claude Codeの文脈で言うと、これが「並列セッション」の基盤になるんですよね。複数のClaude Codeセッションを同じリポジトリで走らせるとき、それぞれが同じファイルを同時に変更しようとして衝突する・・・という問題がworktreeで解決される。
テキトー教師コミュニティのメンバーさんがよくやってしまうのが、同じディレクトリで2つのClaude Codeを起動してしまうパターンなんですよ。「片方がAPIを書いて、もう片方がフロントを書けば速いんじゃ?」という発想なんですが、同じファイルを両方が編集しようとして壊れるリスクがある。
室谷worktreeを使えば、それぞれのClaudeセッションが完全に独立したディレクトリで作業するので衝突しないんですよね。リポジトリの履歴は共有されているので、後でブランチをマージすればいい。
--worktreeフラグの使い方

室谷Claude Codeの
--worktreeフラグは、実行するだけでworktreeの作成とClaudeの起動を一括でやってくれます。コマンドはシンプルで、こんな感じです。# "feature-auth"という名前のworktreeを作成し、Claude Codeを起動
claude --worktree feature-auth
# 別のworktreeで別のセッションを起動(別ターミナルで)
claude --worktree bugfix-123
テキトー教師この
--worktree feature-authで渡した名前が、そのままworktreeのディレクトリ名とブランチ名になるんですよね。整理するとこういう構造になります。| 要素 | 内容 |
|---|---|
| 作成される場所 | <リポジトリルート>/.claude/worktrees/feature-auth/ |
| ブランチ名 | worktree-feature-auth |
| ベースブランチ | リモートのデフォルトブランチ(origin/HEADが指す先) |
室谷名前を省略すると自動でランダムな名前が付くんですよ。
複数タスクを素早く立ち上げたいときに便利です。
claude --worktreeだけで実行すると、bright-running-foxみたいな感じで。複数タスクを素早く立ち上げたいときに便利です。
テキトー教師ベースブランチの話は重要で、
そのときは以下のコマンドで同期できます。
origin/HEADがリモートのデフォルトブランチを指しています。たとえばGitHubでデフォルトブランチをmainから別のブランチに変更した場合、ローカルの参照が古いままになることがある。そのときは以下のコマンドで同期できます。
# リモートのデフォルトブランチに合わせて origin/HEAD を更新
git remote set-head origin -a
室谷これ、地味に詰まるポイントなんですよね。worktreeを作ったら意図しない古いブランチから派生してた・・・というケース、MYUUUでも最初の頃にありました。
並列作業の実践パターン:フィーチャー開発とバグ修正を同時に

テキトー教師実際にどう使うかを見ていきましょう。一番よくあるのが、フィーチャー開発とバグ修正を並列で進めるパターンです。
室谷ターミナルを2つ開いて、それぞれで
claude --worktreeを叩く、というだけですね。手順はこうなります。# ターミナル1: フィーチャー開発用のworktreeで起動
claude --worktree feature-user-profile
# ターミナル2: バグ修正用のworktreeで起動(別ウィンドウ・別タブで)
claude --worktree bugfix-login-error
テキトー教師この状態で、2つのClaudeが完全に独立した作業ディレクトリで同時に動いています。片方のClaudeが
src/components/UserProfile.tsxを編集しても、もう片方の作業には一切影響しない。
室谷これがないと、たとえばフィーチャー開発中に緊急のバグ報告が来たとき「今作業中のコードをstashしてブランチ切り替えて・・・」という手間が発生するんですよね。worktreeがあれば別ディレクトリで普通に作業できる。
テキトー教師受講生さんに説明するとき「gitのstash地獄から解放される」って言うと反応がいいです(笑)。stashは便利ですが、大きな変更を抱えている途中でのブランチ切り替えはメンタル的に重いので。
室谷わかりますw MYUUUのエンジニアも「worktree使い始めてからstashをほとんどしなくなった」って言ってましたね。
subagentとworktreeの組み合わせ
室谷さらに発展した使い方として、subagentのworktree分離があります。Claude Codeに「worktreeを使って並列で作業して」とお願いするか、カスタムsubagentのフロントマターに
isolation: worktreeを設定するだけです。
テキトー教師これが結構強力で、1つのClaudeセッションの中で複数のsubagentがそれぞれ独立したworktreeで並列作業できるんですよね。orchestratorとなるClaudeが全体を管理して、各subagentが自分のworktreeで担当タスクをこなす。
室谷このツイートでも書いたんですが、Chrome MCPでデザイントークン抽出、git worktreeで並列ビルド、自動マージ、という組み合わせが実際に動くんですよね。個々のツールは誰でも使えますが、「どう組み合わせるか」のアーキテクチャを設計できるかどうかが差になる。
テキトー教師subagentのworktreeは作業が終わって変更がなければ自動的にクリーンアップされるので、後片付けの手間もないです。この自動化は地味ですが、実務でかなり助かります。
.worktreeincludeで.envファイルをコピーする

テキトー教師実際に使い始めると必ず直面するのが「worktreeに.envが入っていない」問題です。worktreeは新規チェックアウトなので、.gitignoreに含まれているファイル(.envや.env.localなど)が引き継がれないんですよ。
室谷これ、最初は手動でコピーしてたんですが、公式で
.worktreeincludeというファイルを使う仕組みが用意されているんですよね。
テキトー教師.worktreeincludeをプロジェクトルートに置いて、コピーしたいファイルを書くだけです。.gitignoreと同じ書き方なので直感的にわかります。# .worktreeinclude の例
.env
.env.local
config/secrets.json
室谷.gitignoreに含まれていて、かつ.worktreeincludeにマッチするファイルだけがコピーされる仕組みです。トラッキングされているファイルは重複コピーされないので、誤って上書きする心配もない。
テキトー教師--worktreeフラグで作成したworktree、subagentのworktree、デスクトップアプリの並列セッション、全てにこの設定が効くので、一度設定したら全部解決します。worktreeのクリーンアップと管理
室谷worktreeを使い終わったあとの管理も整理しておきましょう。Claude Codeを終了したとき、変更の有無でふるまいが変わります。
テキトー教師整理するとこういう動作になります。
| 状態 | Claude Codeの動作 |
|---|---|
| 変更なし | worktreeとブランチを自動削除 |
| 変更あり・コミットあり | 保持するか削除するかを確認 |
| クラッシュで中断(変更なし、未プッシュコミットなし) | 次回起動時に自動削除 |
室谷「保持」を選んだ場合は
.claude/worktrees/にそのまま残るので、後からclaude --worktree feature-authで再開できます。セッションの再開についてはでも詳しく解説しています。
テキトー教師Gitコマンドで手動管理したい場合は直接
git worktreeコマンドを使います。Claude Codeの--worktreeフラグを使わず、自分でworktreeを作ってからClaudeをそのディレクトリで起動する方法も有効です。# Gitで直接worktreeを作成する場合
git worktree add ../project-feature-a -b feature-a
git worktree add ../project-bugfix bugfix-123
# 作成したworktreeでClaudeを起動
cd ../project-feature-a && claude
# 一覧の確認
git worktree list
# 手動削除
git worktree remove ../project-feature-a
室谷.claude/worktrees/以外の場所にworktreeを作りたい場合や、特定のブランチからチェックアウトしたい場合は、Gitコマンドの方が柔軟性があります。Claude Codeの--worktreeフラグは「デフォルトブランチから新規ブランチを作って起動」に特化している形ですね。
テキトー教師.gitignoreに.claude/worktrees/を追加しておくと、メインリポジトリでworktreeの内容がuntracked filesとして見えなくなるので整理されます。これも実務でやっておきたいポイントです。subagentとagent teamsとworktree、どう使い分けるか
テキトー教師ここまで来ると「subagentとagent teamsとgit worktree、何が違うの?」という疑問が出てきますね。整理するとこういう使い分けになります。
| アプローチ | 向いているケース |
|---|---|
| git worktree(手動並列) | 自分で複数セッションを管理したい、独立したタスク |
| subagent + worktree | 1セッション内でClaudeにworktree管理を任せたい |
| agent teams | 複数のClaudeインスタンスが相互にメッセージを送り合って協調したい複雑なタスク |
室谷agent teamsはまだ実験的機能(環境変数
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMSの設定が必要)で、subagentとの違いは「エージェント同士が直接通信できるかどうか」なんですよね。worktreeはどちらでも使える基盤技術という位置付け。
テキトー教師講座で教えていて思うのは、「まず
--worktreeフラグで手動並列に慣れてから、subagentのworktree分離に進む」というステップが定着しやすいですね。agent teamsはトークン消費が多いので、本当に複雑な協調作業が必要なときだけ使うイメージです。
室谷経営的な視点から言うと、並列実行はそのままコスト増にもなります。単純な順序処理なら直列でいい、並列化で得られるスピードがコスト増を上回るかを考える・・・という感覚を持つと実務で判断に迷わなくなります。
よくあるトラブルと解決策
テキトー教師最後に、実際に使ってみてよく詰まるポイントをまとめておきます。
室谷一番多いのが「worktreeを作ったら意図しないブランチから派生した」ですね。これは
origin/HEADの参照が古いのが原因なので、git remote set-head origin -aで解決できます。
テキトー教師あとは「worktreeで.envが使えない」は
.worktreeincludeファイルを設置すれば解決。それと「worktreeを削除しようとしたらエラーになる」は、そのworktreeで変更済みのファイルが残っているときに出るエラーです。
室谷そのときは
git worktree remove --forceで強制削除できますが、未保存の変更が消えるので注意が必要ですね。
テキトー教師よくあるエラーをまとめるとこうなります。
| エラー・症状 | 原因 | 解決策 |
|---|---|---|
| 意図しないブランチから派生 | origin/HEADが古い | git remote set-head origin -a |
| worktreeに.envがない | gitignoreファイルはコピーされない | .worktreeincludeに追記 |
| worktree削除エラー | 変更済みファイルが残っている | git worktree remove --force |
| subagentのworktreeが残っている | クラッシュ・中断 | 次回起動時に自動削除(または手動でgit worktree remove) |
よくある質問(FAQ)
Q: git worktreeはGitの標準機能ですか?Claude Code専用ですか?
テキトー教師git worktree自体はGit 2.5以降に標準搭載されている機能です。Claude Codeの
Gitコマンドでworktreeを作り、そのディレクトリでClaudeを起動する方法でも同じことができます。
--worktreeフラグは、このGit標準機能をClaude Codeから便利に使えるようにしたものです。Gitコマンドでworktreeを作り、そのディレクトリでClaudeを起動する方法でも同じことができます。
Q: worktreeのブランチはどこから派生しますか?
室谷origin/HEADが指すリモートのデフォルトブランチから派生します。mainやdevelopがデフォルトになっているリポジトリならそこから。GitHubでデフォルトブランチを変更した場合は
git remote set-head origin -aで同期が必要です。Q: Claude Code Desktopでもworktreeは使えますか?
テキトー教師使えます。Desktop版では並列セッションをUIで管理でき、
CLI版と同じ仕組みが動いているので、コマンドとの互換性もあります。
.worktreeincludeも効きます。CLI版と同じ仕組みが動いているので、コマンドとの互換性もあります。
Q: worktreeと通常のブランチ切り替えの違いは?
室谷通常のブランチ切り替え(
git checkoutやgit switch)は同じディレクトリで別のブランチに切り替えるので、現在の作業内容を一度stashするか捨てる必要があります。worktreeは物理的に別のディレクトリに同じリポジトリの別ブランチを展開するので、2つの作業を同時に進められます。まとめ:Claude Codeでのgit worktree活用はこれだけ覚えれば十分
室谷今回カバーした内容をまとめると、Claude Codeのgit worktree活用のポイントはシンプルです。
テキトー教師整理するとこうなります。
claude --worktree <名前>で隔離されたworktreeを作成してClaudeを起動- 名前省略で自動命名(
claude --worktreeのみ) .worktreeincludeを使って.envなどのgitignoreファイルを自動コピー- subagentのworktree分離はフロントマターの
isolation: worktreeまたはプロンプトで指定 - 終了時の挙動は変更あり/なしで異なる(変更なし→自動削除、変更あり→確認)
- Gitコマンドによる手動管理も組み合わせられる
.gitignoreに.claude/worktrees/を追記してリポジトリを整理する
室谷最初の一歩は
claude --worktree feature-authを打つだけ。これで並列開発の世界に入れますし、慣れてきたらsubagentと組み合わせて自動化する・・・という順番で覚えていくと自然です。
テキトー教師git worktreeを使いこなせると、Claude Codeのやと組み合わせた本格的な並列開発の土台になります。まずは
--worktreeフラグを試してみてください。