Git Worktrees

stashingせずに複数のブランチで同時に作業 — それぞれを独自のフォルダで。

Worktreesは、日常の開発で最もイライラする問題の1つを解決します:何かの途中でブランチを切り替える必要がある場合。Worktreesを使用すると、切り替える必要はありません — 2つ目のフォルダで別のブランチを開き、両方で同時に作業します。

Git Worktreeとは?

通常、gitリポジトリには1つのワーキングディレクトリ — ファイルが存在するフォルダ — があります。どの瞬間にも、正確に1つのブランチがそのフォルダでチェックアウトされています。別のブランチを見たい場合、チェックアウトする必要があり、ファイルがそのブランチのバージョンに置き換えられます。現在の作業をコミットしていない場合、まずstashする必要があり、これは面倒でエラーが発生しやすいです。

Worktreeは、同じgitリポジトリにリンクされた2つ目(または3つ目、4つ目)のワーキングディレクトリです。各worktreeは独自のチェックアウトされたブランチ、独自のファイル状態、独自の履歴を持ちます。それらはすべて同じ.gitフォルダとコミット履歴を共有 — 同じリポジトリへの異なるウィンドウにすぎません。

具体的な例:AIエージェントがfeature/paymentsで新機能の構築の halfway にいます。同僚がfix/login-bugのPRをレビューするよう依頼してきました。機能作業をstashする代わりに、fix/login-bugのworktreeを別のフォルダに作成します。そこでPRをレビューしている間、機能ブランチは元のフォルダでそのまま残ります。

Worktreeを作成

  1. Gitパネルを開く — Cmd+Gを押す
  2. パネル上部のWorktreesタブをクリック
  3. + Worktreeを追加をクリック
  4. ブランチを選択 — リストから既存のブランチ、または新しいブランチ名を入力して作成
  5. 新しいworktreeのフォルダ場所を選択(デフォルトで、1DevToolは現在のプロジェクトフォルダの隣にフォルダを提案)
  6. 作成をクリック — 1DevToolがgit worktree addを実行し、新しいworktreeフォルダをアクティブなワークスペースとして開く

新しいworktreeがメインworktreeとともにWorktreesタブにリストされます。

Git worktree

Worktreeターミナル

1DevToolがworktreeを作成すると、そのworktreeのフォルダにスコープされた新しいターミナルも開きます。ブランチ名がターミナルタイトルに表示されるため、どのブランチで作業しているかが常にわかります。

そのターミナルのAIエージェントはworktreeフォルダで動作 — ファイルの読み書き、コマンドの実行、そのブランチでの変更が可能で、他のブランチとの干渉や認識はありません。

Git worktree用のターミナルを追加

ブランチ名付きGit worktreeターミナル

複数のworktreeで同時にエージェントを実行できます。1つのエージェントが支払い機能で作業している間、もう1つが別のブランチでバグを修正します。両方のエージェントが独自のターミナル、独自のファイルコンテキスト、独自のブランチを持ち — 互いに競合することはできません。

Worktreeを削除

worktreeが不要になったら — PRがマージされ、ブランチが削除された — きれいに削除できます:

  1. Gitパネルを開き、Worktreesタブに移動
  2. 削除したいworktreeを探す
  3. 横のゴミ箱アイコンをクリック
  4. 削除を確認

これによりworktreeフォルダが削除され、gitから登録解除されます(git worktree removeと同等)。ブランチ自体は削除されません — ワーキングディレクトリのみです。必要であれば後でworktreeを再作成できます。

ヒント: worktreeを使用して、メインを安定させながら機能ブランチでAIエージェントを実行。エージェントがメインブランチを誤って壊すことはありません。

Worktreesはgitの最も過小評価されている機能の1つです。AI支援開発の文脈では — エージェントが数分で数十のファイル変更を行う可能性がある — 各エージェントの作業を独自のブランチとフォルダに隔離できることは重要なセーフティネットです。