メインコンテンツまでスキップ

Git ワークツリーと並列ワークストリーム

上級
What you'll learn
  • git ワークツリーとは何か — 1 つのリポジトリ、複数の作業ディレクトリ、それぞれが独自のブランチ上にある
  • それが解決する正確な問題:並列の Claude セッションが同じファイルで衝突するのを止める
  • ワークツリーを追加・一覧表示・削除する 4 つのコマンド
  • この手法が真価を発揮するとき — そしてマージ時に噛みつく 3 つの落とし穴
  • ワークツリーがサブエージェントとどう組み合わさるか:セッションをまたぐ並列性 vs 1 つの中での並列性

git ワークツリーは、1 つのリポジトリに複数の作業ディレクトリを持たせ、それぞれを別のブランチにチェックアウトできるようにします。これを Claude Code と組み合わせれば、同じプロジェクトで複数のセッションを並列に実行でき、各セッションが自分のファイルを編集し、衝突しません。

それが解決する問題

2 つの Claude セッションが同じ作業ディレクトリを同時に編集すると、互いの変更につまずきます。ワークツリーは各セッションに独自のディレクトリとブランチを与えるので、マージするまで並列作業は隔離されたままです。

基本

4 つのコマンドがワークフロー全体を担います:ワークツリーを追加し(新しいディレクトリ+新しいブランチ)、存在するものを一覧表示し、終わったら 1 つ削除します。

Guided walkthrough1 of 4
  1. リポジトリから、git worktree add ../app-feature-a -b feat-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 つのワークツリーで長いタスクを実行しながら、別のワークツリーで作業を続ける。
  • メインのチェックアウトから隔離されたリスクのある実験

落とし穴

Watch out
  • マージバックに注意:ブランチはいずれマージされます — 衝突は作業中ではなく、そのときに表面化します。ワークツリーは焦点を絞り、短命に保ちましょう。
  • 2 つのワークツリーから、状態を持つ共有リソース(1 つの開発用 DB、1 つのポート)を分離せずに実行しないでください。
  • git worktree remove で片付け、古いディレクトリが溜まらないようにしましょう。

ワークツリー vs サブエージェント

並列性の 2 つの異なる軸 — 競合せず、積み重なります。

何を並列化するか隔離
サブエージェント1 つのセッションの作業(委譲)隔離されたコンテキスト
ワークツリーディスク上でセッションをまたぐ作業隔離されたブランチ/ファイル

うまく組み合わさります:ワークツリー内のセッションは、それ自体がサブエージェントを生成できます。

Pro tip
  • 同じリポジトリに同時に触れる 2 つの Claude セッションが必要なときはワークツリーを使い、1 つのセッションが作業の一塊を隔離されたコンテキストにオフロードする必要があるときはサブエージェントを使いましょう。

理解度チェック

0/4
  1. git ワークツリーは何を与えてくれますか?
  2. 新しいディレクトリ**と**新しいブランチを 1 ステップで作るコマンドはどれですか?
  3. 並列ワークツリーからのマージ衝突は、実際にはいつ表面化しますか?
  4. ワークツリーとサブエージェントはどう関係しますか?
Key takeaways
  • git ワークツリー = 1 つのリポジトリ、複数の作業ディレクトリ、それぞれが独自のブランチ上 — 衝突なしの並列 Claude セッションの基盤。
  • 1 つの作業ディレクトリ上の 2 つのセッションは互いにつまずく。セッションごとのワークツリーは、マージするまでファイルとブランチを隔離する。
  • git worktree add ../dir -b branch がディレクトリ+ブランチを作り、list が表示し、remove が片付ける。
  • 並列の機能/修正、他の作業と並行する長時間タスク、隔離されたリスクのある実験に価値がある。
  • マージバックに注意し、状態を持つリソース(DB、ポート)をワークツリー間で共有せず、必ず片付ける — そしてワークツリーはサブエージェントと組み合わさることを忘れずに。

次へ