🐕

AIに同じリポジトリで並行作業させるなら git worktree が一番ラクだった

に公開

AIエージェントに「同じリポジトリで並行作業」させたいとき、雑にブランチを切り替えていくとだいたい破綻します。

  • 自分の作業ツリーが汚れる
  • AIが勝手に git checkout して状態が変わる
  • 「今どのブランチ見てたっけ?」が発生する
  • そしてコンテキストが長くなるほどAIが頭悪くなる(体感)

そこで git worktree です。
正直、自分が手作業のときはあまり使ってこなかったんですが、AI並行作業だと便利さが跳ね上がります。


前提

  • エディタ: VS Code
  • AIエージェント: VS Code のターミナルで claude code
  • ディレクトリ構成: {プロジェクト用ディレクトリ}/{repo}
    例: ~/work/letsgo/letsgo-core

何が嬉しいか(結論)

同一リポジトリの別ブランチを、別フォルダで同時に開ける

  • 自分: メインの作業ディレクトリ(普段のやつ)
  • AI: worktree に切り出した別ディレクトリ
  • お互いの作業ツリーが干渉しない
  • VS Code も「別ウィンドウ」で分離できる

自分の運用ルール(ここがポイント)

1) デフォルトのworktreeは触らない

「今まで通りのリポジトリの場所」を 自分の作業場として固定 します。
worktree は AI専用の作業場

2) worktreeは repo の外にまとめる

例だと ../worktrees/ に寄せています。

  • どこにworktreeを生やしてるかが明確
  • あとで掃除しやすい

実際の流れ(いつものやつ)

0) メインの作業ディレクトリは main にしておく

cd ~/work/letsgo/letsgo-core
git ch main

(※ git ch はエイリアス想定。普通は git checkout main / git switch main でOK)


1) AI用worktreeを作る

git worktree add ../worktrees/fix/auth-callback fix/auth-callback

2) worktree 側で VS Code を起動して、AIはそこだけ触らせる

code ../worktrees/fix/auth-callback

そして、そのVS Code のターミナルで claude code を立ち上げる。

重要:
AIには「このディレクトリしか触るな」を最初に言っておくのが効きます。


3) 自分はメイン側で別作業を続ける

  • 自分: メインディレクトリ
  • AI: worktreeディレクトリ

VS Code を完全に分離できるのがポイントです。


4) 動作確認は “メイン側” でやる

AIのworktreeは「作業用」。

  • ワーキングツリーがクリーンに保てる
  • AIが実行したコマンドの影響を切り分けやすい

5) 終わったらworktreeを消す

git worktree remove ../worktrees/fix/auth-callback

つまづきポイント(経験談)

  • 未コミットがあると remove できない
  • worktreeの存在を忘れる
git worktree list
  • AIがメイン側に移動して作業し始める
    → 最初の指示が9割

動作確認時の指示プロンプト(コピペ用)

あなたはこのリポジトリで作業中のAIエージェントです。

【重要】
- 作業ディレクトリは「WORKTREE側」だけを使用してください。
- メインの作業ディレクトリには移動・変更しないでください。
- git checkout / git switch は勝手に実行しないでください。
- テストを通すためにテストコードの期待値を書き換えるのは禁止です。

【目的】
- 変更内容: (ここに今回の目的を書く)
- 完了条件:
  1) ローカルテストが通る
  2) lint / format が通る

【動作確認】
- 動作確認はメインディレクトリ側で実施します。
- 実行コマンド一覧と期待結果を提示してください。

まとめ

AIに並行作業させるときの git worktree は、個人的には 事故防止装置 でした。

  • 作業場所が分離できる
  • VS Code も分離できる
  • AIの暴走が被害限定になる
  • 後片付けが簡単

AIと同じリポジトリを触るのが怖い人ほど、試す価値があります。

Discussion