【Git2026 #補足】worktreeによる並行開発

worktreeとは

worktree は、1つのリポジトリから複数の作業ディレクトリ(ワークツリー)を同時に作成できる機能です。通常、Gitリポジトリには1つの作業ディレクトリしかありませんが、worktreeを使うと追加の作業ディレクトリを別のパスに作成し、それぞれで異なるブランチをチェックアウトして同時に作業できます。

基本的な使い方
# 新しいworktreeを作成(既存ブランチをチェックアウト)
git worktree add ../my-feature feature-branch

# 新しいブランチを作成しつつworktreeを追加
git worktree add -b new-branch ../new-work

# worktreeの一覧を表示
git worktree list

# 不要になったworktreeを削除
git worktree remove ../my-feature

branchとの違い

branch worktree
概念 コミット履歴の分岐を管理するポインタ リポジトリに紐づく追加の作業ディレクトリ
切り替え方法 git switch / git checkout で作業ディレクトリの中身が切り替わる 別のディレクトリとして存在するので切り替え不要
同時作業 1つの作業ディレクトリでは1ブランチしかチェックアウトできない worktreeごとに別ブランチをチェックアウトでき、複数ブランチで同時に作業可能
作業中の変更 ブランチを切り替えるときに stash やコミットが必要 別ディレクトリなので、他のworktreeに影響しない
リポジトリデータ .git ディレクトリは1つを共有 参照用の .git ファイルを持ち、履歴・ブランチ情報を共有する
💡
worktreeはbranchの代わりではなく、branchをより便利に扱うための仕組みです。worktree内でもブランチを使ってバージョン管理を行います。

AIエージェント × worktree で並行開発

CodexやClaude CodeなどのAIエージェントとworktreeを組み合わせて使うとAIの作業完了を待たずに並行開発することができます。

例:

  • worktree A(自分用):自分が手動でコーディングを進める
  • worktree B(AIエージェント用):AIエージェントに別タスクのコードを書かせる
# 例:AIエージェント用のworktreeを作成
git worktree add ../ai-task feature/ai-refactor

なお、Claude Codeには--worktree(短縮形 -w)オプションがあります。これを付けて起動すると、.claude/worktrees/ 配下に専用のworktree(ブランチ付き)が自動で作成され、その中でエージェントが作業を始めます。セッション終了時には変更の有無がチェックされ、変更がなければディレクトリとブランチは自動でクリーンアップされます(変更がある場合は保持するか破棄するかを確認されます)。

# 専用のworktreeを自動作成してエージェントを起動
claude --worktree

つまずきやすいポイント

  • 同じブランチを複数のworktreeで同時にチェックアウトすることはできない
    • すでに別のworktreeでチェックアウト済みのブランチを開こうとするとエラーになります。
  • 依存パッケージは各worktreeごとに用意が必要
  • node_modules などはworktree間で共有されないため、worktreeを追加したら npm install 等を改めて実行する必要があります
  • 不要になったworktreeは git worktree remove で削除する
    • ディレクトリを手動で消すと参照情報が残るため、git worktree prune での整理も覚えておくと安心です

参考