Git ワークツリーと並列ワークストリーム
- git ワークツリーとは何か — 1 つのリポジトリ、複数の作業ディレクトリ、それぞれが独自のブランチ上にある
- それが解決する正確な問題:並列の Claude セッションが同じファイルで衝突するのを止める
- ワークツリーを追加・一覧表示・削除する 4 つのコマンド
- この手法が真価を発揮するとき — そしてマージ時に噛みつく 3 つの落とし穴
- ワークツリーがサブエージェントとどう組み合わさるか:セッションをまたぐ並列性 vs 1 つの中での並列性
git ワークツリーは、1 つのリポジトリに複数の作業ディレクトリを持たせ、それぞれを別のブランチにチェックアウトできるようにします。これを Claude Code と組み合わせれば、同じプロジェクトで複数のセッションを並列に実行でき、各セッションが自分のファイルを編集し、衝突しません。
それが解決する問題
2 つの Claude セッションが同じ作業ディレクトリを同時に編集すると、互いの変更につまずきます。ワークツリーは各セッションに独自のディレクトリとブランチを与えるので、マージするまで並列作業は隔離されたままです。
基本
4 つのコマンドがワークフロー全体を担います:ワークツリーを追加し(新しいディレクトリ+新しいブランチ)、存在するものを一覧表示し、終わったら 1 つ削除します。
Guided walkthrough1 of 4
- リポジトリから、git worktree add ../app-feature-a -b feat-a が新しいディレクトリと新しいブランチを一度に作ります。
- git worktree add ../app-fix-123 -b fix-123 — 1 つ目と並んだ、2 つ目の隔離されたディレクトリ/ブランチ。
- git worktree list がすべての作業ディレクトリと、それが乗っているブランチを表示します。
- git worktree remove ../app-feature-a がワークツリーを取り壊し、古いディレクトリが溜まらないようにします。
4 コマンドのワークフロー
# from your repo git worktree add ../app-feature-a -b feat-a # new dir + new branch git worktree add ../app-fix-123 -b fix-123 git worktree list # when done with one: git worktree remove ../app-feature-a
各ワークツリーのディレクトリで Claude Code セッションを開き、独立して作業させます。
いつ価値があるか
- 同時に進めたい並列の機能/修正。
- 1 つのワークツリーで長いタスクを実行しながら、別のワークツリーで作業を続ける。
- メインのチェックアウトから隔離されたリスクのある実験。
落とし穴
- マージバックに注意:ブランチはいずれマージされます — 衝突は作業中ではなく、そのときに表面化します。ワークツリーは焦点を絞り、短命に保ちましょう。
- 2 つのワークツリーから、状態を持つ共有リソース(1 つの開発用 DB、1 つのポート)を分離せずに実行しないでください。
- git worktree remove で片付け、古いディレクトリが溜まらないようにしましょう。
ワークツリー vs サブエージェント
並列性の 2 つの異なる軸 — 競合せず、積み重なります。
| 何を並列化するか | 隔離 | |
|---|---|---|
| サブエージェント | 1 つのセッション内の作業(委譲) | 隔離されたコンテキスト |
| ワークツリー | ディスク上でセッションをまたぐ作業 | 隔離されたブランチ/ファイル |
うまく組み合わさります:ワークツリー内のセッションは、それ自体がサブエージェントを生成できます。
- 同じリポジトリに同時に触れる 2 つの Claude セッションが必要なときはワークツリーを使い、1 つのセッションが作業の一塊を隔離されたコンテキストにオフロードする必要があるときはサブエージェントを使いましょう。
理解度チェック
0/4- git ワークツリー = 1 つのリポジトリ、複数の作業ディレクトリ、それぞれが独自のブランチ上 — 衝突なしの並列 Claude セッションの基盤。
- 1 つの作業ディレクトリ上の 2 つのセッションは互いにつまずく。セッションごとのワークツリーは、マージするまでファイルとブランチを隔離する。
- git worktree add ../dir -b branch がディレクトリ+ブランチを作り、list が表示し、remove が片付ける。
- 並列の機能/修正、他の作業と並行する長時間タスク、隔離されたリスクのある実験に価値がある。
- マージバックに注意し、状態を持つリソース(DB、ポート)をワークツリー間で共有せず、必ず片付ける — そしてワークツリーはサブエージェントと組み合わさることを忘れずに。