Claude Code×Git Worktreeで並列開発する方法【実践手順を全解説】

Claude CodeでGit Worktreeって使えるの?
どうやって設定すればいいんだろう…

より効率よく開発を進めるため、Claude CodeGit Worktreeを組み合わせたいと考えている人は多いですよね。

ただ、どう設定すればいいのかわからない人もいるはず。

そこでこの記事では設定手順も交え、Claude CodeとGit Worktreeを組み合わせて並列開発する方法を解説します。’–worktree’フラグの使い方や安全に開発進めるコツも紹介するので、ぜひ参考にしてください。

Claude Codeの特徴をおさらいしておきたい人は、次の記事を参考にしてください。

この記事の要約
  • Git Worktreeで複数ブランチを同時に作業できる
  • tmux + worktreeでClaude Codeの並列実行が実現
  • ロックファイル競合はWorktreeの分離設計で防止できる

『ClaudeCodeに興味はあるけど、どうやって使えばいいんだろう…』

そんな方へ、

  • ClaudeCodeに作業や仕事を任せる方法
  • ClaudeCodeを使いこなすたった1つのコツ
  • 業務効率化や収入獲得に活かすClaudeCodeの実演

を、無料のオンラインセミナーで凝縮してお伝えします!

パソコンはもちろん、スマホから気軽に参加OK。この時間が、あなたを変える大きなきっかけになりますよ。

\ スマホ参加OK!顔出し不要 /

目次

Claude CodeとGit Worktreeを組み合わせる利点

Claude CodeとGit Worktreeを組み合わせる利点

Git Worktreeは、1つのGitリポジトリから複数の作業ディレクトリを同時に展開できる機能です。Claude Codeと組み合わせることで、ブランチごとに独立したAIエージェント環境を用意でき、並列開発を効率的に進められます。

通常の開発では、ブランチを切り替えるたびにClaude Codeのコンテキストが変わるため、作業の流れが中断されやすくなります。一方、Git Worktreeを使えば、ブランチごとに別ディレクトリを保持できるため、それぞれの作業環境でClaude Codeを同時に起動できます。

たとえば、片方のセッションでは新機能を実装し、もう片方ではバグ修正を進めるといった使い分けが可能です。作業内容が混在しにくくなるため、AIエージェントごとの役割分担もしやすくなります。

ここからは下記の観点別に、並列実行が適したケースと不向きなケースを解説します。

並列実行が効果的なケース

独立性の高い複数タスクを同時進行したい場合Claude Code × Git Worktreeの構成は非常に効果的です。

理由は、作業ディレクトリが分離されていることで、それぞれのClaude Codeセッションが互いのコンテキストや変更内容に干渉しにくくなるためです。とくに実装対象が明確に分かれているタスクでは大きな効果を発揮します。

たとえば、次のようなケースに向いています。

  • フロントエンドとバックエンドを別ブランチで同時に開発する
  • バグ修正(hotfix)と新機能開発を並行して進める
  • APIごとにClaude Codeセッションを分けて実装する
  • レビュー対応と新規実装を別環境で進める

具体的なイメージとして、feature/authブランチでログイン機能を開発し、同時にfeature/paymentブランチで決済機能を実装するといった運用が考えられます。それぞれ独立したClaude Codeセッションを利用することで、会話履歴や生成コンテキストが混ざらず、作業効率を維持できます。

タスク同士の依存関係が少ない場合は、直列開発よりも大幅に開発速度を高められるケースもあります。

並列実行が不向きなケース

同じファイルや共有リソースを複数のセッションが同時に変更するケースでは、並列実行によってトラブルが起きやすくなります。

とくに注意したいのは、依存関係や共通設定に関わるファイルです。複数のWorktreeで同時に編集すると、マージ競合やロックエラーが発生しやすくなります。

たとえば、次のようなケースでは注意が必要です。

  • package.jsonやpnpm-lock.yamlなど依存関係ファイルを同時更新する
  • データベースのマイグレーションファイルを複数ブランチで変更する
  • 共通ユーティリティや設定ファイルを並列編集する
  • 同じ環境変数ファイル(.envなど)を別セッションで書き換える

これは、Git worktreeはブランチのチェックアウト先を分けるだけで、`node_modules`などの一部ディレクトリは共有される構成になりやすいからです。

これは、Git Worktreeが「Git管理上の作業ディレクトリ」を分離する機能であり、環境構成そのものを完全分離するわけではないためです。

とくにNode.js系プロジェクトでは、node_modulesの扱いによって競合が発生しやすくなります。たとえば、複数セッションが同時にパッケージインストールを実行すると、ロックファイルの競合や依存不整合が起きることがあります。

そのため、依存関係の更新を伴うタスクは直列で進めるか、Worktreeごとに依存環境を分離して運用するのがおすすめです。

Claude Code × Git Worktreeで並列開発する手順

Claude Code × Git Worktreeで並列開発する手順

ここからは、Claude CodeとGit Worktreeを組み合わせた並列開発の設定手順を説明します。

上記を含め、Claude Codeで並列実行する手順を詳しく知りたい人は、次の記事を参考にしてください。

Git Worktreeの作成と基本操作

まず既存のGitリポジトリにWorktreeを追加し、並列開発用の作業環境を用意します。

ターミナルで対象リポジトリのルートディレクトリへ移動し、次のコマンドを実行してください。

```bash
# 新しいブランチとworktreeを同時に作成する
git worktree add ../project-feature-auth feature/auth

# すでに存在するブランチにworktreeを作成する
git worktree add ../project-feature-payment feature/payment
```

1つ目のコマンドでは、feature/authブランチを新規作成しながらWorktreeを追加しています。すでにブランチが存在する場合は、2つ目のようにブランチ名だけ指定すれば問題ありません。

実行後は、親ディレクトリ配下に次のような作業ディレクトリが作成されます。

```
../project-feature-auth
../project-feature-payment
```

それぞれ独立したGit作業環境として扱えるため、別々のClaude Codeセッションを同時に起動できます。

作成済みのworktreeを確認するには、次のコマンドを使います。

```bash
git worktree list
```

実行すると、次のような出力が表示されます。

```
/home/user/project          abc1234 [main]
/home/user/project-feature-auth  def5678 [feature/auth]
/home/user/project-feature-payment  ghi9012 [feature/payment]
```

不要になったworktreeを削除するには、次のコマンドを実行します。

```bash
git worktree remove ../project-feature-auth
```

削除後は、参照情報を整理するためにpruneも実行しておくと安全です。

```bash
git worktree prune
```

‘–worktree’フラグを使った起動方法

Claude Codeには`–worktree`のような専用フラグは存在しません。

その代わり、Claude Codeは「起動時のカレントディレクトリ」をプロジェクトルートとして認識します。そのため、対象のworktreeディレクトリに`cd`で移動してから`claude`を起動するだけで、ブランチごとの独立した環境として利用できます。

基本的な起動方法は次のとおりです。

```bash
# feature/authのworktreeディレクトリに移動してClaude Codeを起動
cd ../project-feature-auth
claude
```

別ターミナルでは、別ブランチ側を起動します。 

```bash
# feature/paymentのworktreeディレクトリに移動してClaude Codeを起動
cd ../project-feature-payment
claude
```

作業ミスを防ぐため、起動前に現在のブランチを確認しておくのがおすすめです。 

```bash
# 現在のディレクトリを確認
pwd

# 現在のブランチを確認
git branch --show-current
```

起動後は通常のClaude Codeと同じように指示を出せます。

```
You: feature/authブランチにJWTを使ったログイン機能を実装してください
```

各Claude Codeセッションは独立しているため、別Worktreeの会話履歴や生成内容が混ざることはありません。

また、WorktreeごとにCLAUDE.mdを配置すると、役割を明確に分離できます。

```
# CLAUDE.md(feature/auth用)の記述例
このworktreeではJWT認証の実装のみを行ってください。
package.jsonの変更は禁止します。
```

このように役割を明示しておくと、Claude Codeが余計なファイルに触れるリスクを減らせます。

Planモードで安全に進めるコツ

並列開発では、複数のClaude Codeセッションが同時に動作するため、意図しないファイル変更が発生しやすくなります。そのため、実装前に変更計画を確認できるPlanモードを活用するのがおすすめです。

Claude Codeでは、セッション内でShift + Tabを2回押すことでPlanモードへ切り替えられます。

```bash
# Worktree側でClaude Codeを起動
cd ../project-feature-auth
claude
```

起動後にShift + Tabを押すと、コード変更前に実行計画のみを表示できます。

Planモードでは、たとえば次のような内容が表示されます。

```
計画:
1. src/auth/jwt.ts を新規作成
2. authMiddleware.ts に認証処理を追加
3. auth.ts にログインAPIを追加

変更対象外:
- package.json
- pnpm-lock.yaml
- node_modules
```

事前に変更範囲を確認できるため「別Worktreeと競合する変更がないか」をチェックしやすくなります。

とくに並列開発では、次の運用ルールを決めておくと安全です。

  • 新規タスクは必ずPlanモードから開始する
  • 想定外のファイル変更が含まれていないか確認する
  • 共通ファイルが変更対象なら並列実行を止める
  • 問題なければ通常モードへ切り替えて実行する

このようにPlanモードを挟むことで、Worktree間の衝突リスクを大きく減らせます。

Claude CodeのPlanモードを詳しく知りたい人は、次の記事を参考にしてください。

tmuxで複数セッションを管理する

複数のClaude Codeセッションを効率よく扱いたい場合は、tmuxとの組み合わせが便利です。

tmuxは、1つのターミナル画面を複数のペインやウィンドウに分割して管理できるツールです。WorktreeごとにClaude Codeを起動すれば、1画面で並列開発を監視できます。

まずtmuxをインストールします。

```bash
# macOSの場合(Homebrewを使用)
brew install tmux

# Ubuntuの場合
sudo apt-get install tmux
```

インストール後、次の手順で並列開発の環境を構築します。

ステップ1:tmuxセッションを起動する

```bash
tmux new-session -s parallel-dev
```

ステップ2:ウィンドウを分割する

tmux内で`Ctrl + b`を押してからコマンドを入力します。

```
# 縦に分割(左右2つのペインを作成)
Ctrl + b → %

# 横に分割(上下2つのペインを作成)
Ctrl + b → "
```

ステップ3:各ペインでworktreeに移動してClaude Codeを起動する

左のペインで`feature/auth`のClaude Codeを起動します。

```bash
cd /home/user/project-feature-auth
claude
```

`Ctrl + b`→`矢印キー`で右のペインに移動し、`feature/payment`のClaude Codeを起動します。

```bash
cd /home/user/project-feature-payment
claude
```

これにより、認証機能と決済機能を同時に監視しながら並列開発を進められます。

さらに、tmuxではウィンドウ追加も可能です。

```bash
# 新しいウィンドウを作成
Ctrl + b → c

# ウィンドウ間の移動
Ctrl + b → n(次のウィンドウへ)
Ctrl + b → p(前のウィンドウへ)
```

管理用ウィンドウでは`git worktree list`や各ブランチの`git log`を確認し、進捗を把握しておくと安全に運用できます。

tmuxのセッションはターミナルを閉じても維持されます。再接続するには次のコマンドを使います。

```bash
tmux attach-session -t parallel-dev
```

この仕組みを活用すれば、長時間の実装タスクをClaude Codeへ任せたまま離席し、あとから進捗確認するといった使い方も可能です。

Worktreeの並列開発でよくあるトラブル

Worktreeの並列開発でよくあるトラブル

Git Worktreeを使った並列開発では、いくつか発生しやすいトラブルがあります。とくにロックファイル競合や変更範囲の衝突は、多くの開発者が一度は経験するポイントです。

ただし、事前に原因と対処法を把握しておけば、ほとんどの問題は短時間で解決できます。

ここからは下記のトラブル別に、原因と解消方法を説明します。

ロックファイル競合やパス指定ミスの解消

並列開発で最も頻繁に発生するトラブルは、`.git/index.lock`や`yarn.lock`などのロックファイルに関する競合です。

並列開発で最も多いトラブルは、.git/index.lockやpackage-lock.jsonなどのロック関連ファイルの競合です。

ロックファイルの競合が発生する主な原因は次のとおりです。

  • 複数のGit操作が同時に走った
  • Claude Codeセッションが異常終了した
  • 複数Worktreeで同時にnpm installを実行した
  • パッケージ管理ファイルを並列更新した

とくに.git/index.lockが残ると、Git操作そのものが実行できなくなります。

その場合は、まずGitプロセスが動作中でないことを確認してください。

```bash
# git関連プロセスを確認
ps aux | grep git
```

プロセスが存在しないことを確認できたら、ロックファイルを削除します。

```bash
rm -f .git/index.lock
```

実行中のGit処理がある状態で削除すると、リポジトリ破損につながる可能性があるため注意してください。

また、Node.js系プロジェクトでは、依存関係ファイルの競合も起きやすくなります。

たとえば、別Worktreeで同時にnpm installやyarn addを実行すると、package-lock.jsonやpnpm-lock.yamlの内容が衝突するケースがあります。

そのため、各Worktreeで独立した依存環境を持つ運用がおすすめです。

```bash
# 各worktreeで独立したnode_modulesを用意する
cd /home/user/project-feature-auth
npm install

cd /home/user/project-feature-payment
npm install
```

ディスク容量は増えますが、依存関係の競合を大幅に減らせます。

もう1つ多いのが、Claude Codeを誤ったディレクトリで起動してしまうケースです。

Worktreeを複数使っていると、「別ブランチだと思って作業していたらmainブランチだった」というミスが起こりやすくなります。

起動前に必ず現在のディレクトリとブランチを確認する習慣をつけましょう。

```bash
# 現在のディレクトリを確認
pwd

# 現在のブランチを確認
git branch --show-current

# worktreeの状態を一覧で確認
git worktree list
```

Claude Code起動後、最初のメッセージで「現在のブランチを教えてください」と確認する運用も効果的です。

Worktree間の変更衝突を防ぐ運用ルール

Worktree運用で重要なのは「どのWorktreeがどの範囲を変更するか」を事前に決めておくことです。

とくに次のようなケースでは、変更衝突が起きやすくなります。

  • 共通コンポーネントを複数ブランチで編集した
  • マイグレーション番号が重複した
  • .envを別セッションが上書きした
  • 共通ユーティリティを別方向に修正した

こうした問題を防ぐには、明確な運用ルールが欠かせません。

まずおすすめなのが、CLAUDE.mdで変更範囲を制限する方法です。

```
# feature/auth用 CLAUDE.md
変更可能なディレクトリ:src/auth/, src/middleware/
変更禁止ファイル:package.json, .env, src/shared/
```

Claude Codeへ役割を明示することで、不要な変更を防ぎやすくなります。

また、共有ファイルの更新は専用Worktreeへ集約するのがおすすめです。

たとえば、package.jsonや依存関係更新はmain側Worktreeだけで行い、完了後に各featureブランチへ反映する運用にすると衝突を減らせます。

長期間の並列開発では、ブランチ差分が大きくなる問題にも注意が必要です。

そのため、定期的にmainブランチを取り込む習慣をつけましょう。

```bash
cd /home/user/project-feature-auth
git fetch origin
git rebase origin/main
```

1日1回程度でもリベースしておくと、最終マージ時の衝突をかなり減らせます。

さらに、作業終了時にClaude Codeへ変更ファイル一覧を出力させる運用も有効です。

```
変更したファイル一覧を出力してください
```

変更内容を別セッションと比較することで、競合の予兆を早期に発見できます。

また、データベースマイグレーションでは、連番衝突を避けるために番号帯を分ける方法も有効です。

たとえば、次のようにルール化しておくと安全です。

  • feature/auth → 20260101_001 から開始
  • feature/payment → 20260101_100 から開始

このように運用ルールを事前に決めておくことで、Git Worktreeを使った並列開発を安定して進めやすくなります。

まとめ

Claude CodeとGit Worktreeを組み合わせることで、独立性の高いタスクを複数のAIエージェントに並列に割り振れるようになります。ブランチごとに作業ディレクトリを分離できるため、コンテキストを維持したまま同時進行で開発を進められる点が大きなメリットです。

まずは、2つのWorktreeを作成し「認証機能」と「決済機能」のように独立したタスクを別々のClaude Codeセッションへ割り当てるところから試してみてください。Git Worktreeを活用した並列開発に慣れることで、Claude Codeの作業効率をさらに高められます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、AI・生成AIを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のAIプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/生成AI/AI・ロボット開発/プログラミング/Webデザイン

目次