Claude Codeとgit worktreeで並列作業する方法
Claude Codeで機能開発とバグ修正を同時に進めたいとき、同じフォルダで2つのセッションを動かすと片方の変更がもう片方に混ざってしまいます。この問題を解決するのがgit worktreeです。同じリポジトリの別ブランチを別フォルダに同時チェックアウトできるため、複数のClaude Codeセッションが互いのファイル変更を汚さずに並列実行できます。本記事では手動での作成手順から、Claude Codeの--worktreeフラグによる支援機能、実用パターンと後片付けまで解説します。Claude Codeの基本的な使い方は「Claude Codeの使い方完全ガイド」もあわせてご覧ください。
前提・動作環境
対象はターミナル版のClaude Code(2026年時点の最新版)です。--worktreeフラグやEnterWorktree/ExitWorktreeツールはv2.1系で追加されたので、古いバージョンなら事前にアップデートしてください。worktree機能はGitリポジトリが前提で、Git以外を使う場合はフックでの代替が必要です。
git worktreeとは
git worktreeは、同じリポジトリの履歴やリモート設定を共有しながら、別のブランチを別のディレクトリに同時にチェックアウトできるGitの標準機能です。通常はブランチを切り替えるたびに作業フォルダの中身が入れ替わりますが、worktreeを使うと元のフォルダ(メインの作業ツリー)はそのままに、別の場所にもう一つの作業ディレクトリを作成し、そこに別ブランチをチェックアウトできます。.gitディレクトリ自体は共有されるため、履歴やリモート情報を別途複製する必要はありません。
なぜClaude Codeと相性がいいか
新機能の実装をClaude Codeに任せている間に、別のセッションで緊急のバグ修正を依頼したい、といった場面は少なくありません。同じフォルダで2つのセッションを動かすと、片方が編集中のファイルをもう片方が上書きしてしまう危険があります。worktreeを使えば、セッションごとに独立したディレクトリとブランチが割り当てられるため、複数のClaude Codeセッションが互いのファイル変更を一切汚さずに動作します。一方がテストを実行していても、もう一方の編集には影響しません。
手動でのworktree作成手順
git worktree addコマンドで、新しいブランチを切りながらworktreeを作成できます。既存のブランチなら、ブランチ名だけを指定します。
git worktree add ../project-feature-a -b feature-a
git worktree add ../project-bugfix fix-issue-456
作成したworktreeに移動し、Claude Codeを起動すればそのブランチ専用のセッションとして作業できます。
cd ../project-feature-a
claude
現在のworktree一覧はgit worktree listで確認できます。別のターミナルで同様にgit worktree addとclaudeを実行すれば、バグ修正用と機能開発用のセッションを同時に走らせられます。
Claude Code側の支援機能
Claude Codeには、git worktree addを手動で叩かなくても済む--worktree(短縮形-w)フラグが用意されています。
claude --worktree feature-auth
実行すると.claude/worktrees/feature-auth/配下にworktree-feature-authという新しいブランチのworktreeが自動作成され、そのままClaude Codeが起動します。名前を省略するとbright-running-foxのようなランダムな名前が割り当てられます。.claude/worktrees/は.gitignoreに追加しておくとよいでしょう。
セッション途中でも「worktreeで作業して」と頼めばEnterWorktreeツールで切り替わり、ExitWorktreeツールで元に戻れます。.claude/worktrees/以外に移動する場合は設定ごと移動するため承認プロンプトが表示されます。サブエージェントのfrontmatterにisolation: worktreeを指定すれば、そのサブエージェントは常に専用worktree内で実行されます。並列化の別の手段であるサブエージェントの使い方は「サブエージェント活用術」で詳しく解説しています。
実用パターン
worktreeが特に役立つのは次のような場面です。
- 機能開発とバグ修正の並行:
claude --worktree feature-xで新機能を実装しつつ、別ターミナルでclaude --worktree hotfix-yを起動すれば、互いのファイルを気にせず同時進行できます。 - レビュー用worktree: 他の人のプルリクエストをレビューしたいときは、PR番号を指定してworktreeを作成できます。
claude --worktree "#1234"
実行するとoriginからpull/1234/headを取得し、.claude/worktrees/pr-1234にworktreeを作成して起動します。手元のブランチを変更せずにPRの内容をレビューできます。Gitコミット・PR作成の自動化は「Git操作自動化」もあわせてご覧ください。
後片付け
worktreeを使い終わったら片付けましょう。手動作成分はgit worktree removeで削除できます。
git worktree remove ../project-feature-a
変更が残っている場合は--forceオプションが必要です。--worktreeで起動したセッションを終了するときは、Claude Codeが変更の有無を確認し、名前なしセッションで作業内容がきれいなら自動でworktreeとブランチを削除します。名前付きや変更が残るセッションでは、削除するか残すか確認プロンプトが表示されます。参照情報の整理にはgit worktree pruneも使えます。
つまずきポイント/よくあるエラー
- node_modulesが見つからない: worktreeは新規のチェックアウトなので依存関係は含まれません。作業前にそのディレクトリで
npm installをやり直す必要があります。 .envなどの未追跡ファイルがない: git管理外のファイルはworktreeに自動コピーされません。プロジェクトルートに.worktreeincludeを置き、.gitignoreと同じ書式でファイルを列挙すると、新しいworktree作成時に自動コピーされます。- worktreeを消したらブランチも消えた:
git worktree removeや自動片付けは、専用ブランチごと削除します。作業内容を残したい場合は削除前に必ずコミット・pushしましょう。 - シンボリックリンク上で作成できない:
.claudeや.claude/worktrees、作成先ディレクトリがシンボリックリンクだと失敗します。リンクを解消してから再実行してください。
よくある質問
git worktreeを使うと元のリポジトリの履歴に影響しますか?
影響しません。.gitディレクトリは共有しますが、作業ファイルとブランチのチェックアウト状態はworktreeごとに独立しています。
--worktreeフラグと手動のgit worktree addはどちらを使うべきですか?
手早く並列セッションを始めたいだけなら--worktreeが簡単です。既存の特定ブランチや、リポジトリ外にworktreeを置きたい場合はgit worktree addの方が柔軟です。
複数のworktreeで同時にコミットしても大丈夫ですか?
問題ありません。別ブランチをチェックアウトしているため、コミットが混ざることはありません。ただし同じブランチを複数のworktreeで同時にチェックアウトすることはGitの仕様上できません。
まとめ
git worktreeは、同じリポジトリの別ブランチを別フォルダに同時チェックアウトできるGitの標準機能で、複数のClaude Codeセッションをファイル変更なしに並列実行するのに役立ちます。git worktree addによる手動作成に加え、--worktreeフラグやEnterWorktree/ExitWorktreeツールを使えば、機能開発とバグ修正の並行やPRレビュー用のworktree作成もコマンド一つで行えます。使い終わったworktreeはgit worktree removeで片付け、依存関係の再インストールも忘れないようにしましょう。基本操作は「Claude Codeの使い方完全ガイド」、Gitコミット・PR作成の自動化は「Git操作自動化」、並列化の別の手段は「サブエージェント活用術」もご覧ください。