|

「複数作業を同時に回せる」 Git worktree

Spread the love

目次

  1. worktreeで何ができるのか
  2. 主なコマンドと実践手順
  3. 並行作業(平行開発)を可能にする設計意図
  4. 導入時に押さえておきたい注意点
  5. 今、ぜひ活用すべき理由

1. worktreeで何ができるのか

Git の worktree 機能は、1つのリポジトリで 複数の作業ツリー(作業ディレクトリ)を同時に持てるようにする仕組み1です。
通常、Git では1つのディレクトリが “作業スペース” であり、切り替えが必要になると git checkout などでブランチを切り替えます。しかし、worktree を使えば、まったく別のパスにもう1つ、別のブランチなどをチェックアウトした別の作業ディレクトリを作成できます。例えば、新機能を実装中に優先バグ修正が来た際でも、自分の作業を中断せずに、別の作業ツリーでバグ修正に着手できます。

この機能により、平行して複数タスクを走らせるというワークフローが自然に実現できます。

2. 主なコマンドと実践手順

実務で使えるよう、代表的なコマンドを手順付きで解説します。

新しい作業ツリーを追加

git worktree add <path> -b <branch>
例: git worktree add ../feature-xyz -b feature-xyz

これにより、リポジトリとは別ディレクトリ ../feature-xyz にブランチ feature-xyz をチェックアウトした作業ツリーが作成されます。
もし <branch> を省略すると、デフォルトで <basename(path)> をブランチ名にして HEAD から新ブランチを作る動きもあります。

現在のリポジトリに紐づくすべての作業ツリーを一覧表示

git worktree list

出力には、各ツリーのパス、チェックアウト中のコミット/ブランチなどが含まれます。

不要になった作業ツリーを削除

git worktree remove <path>
例:
git worktree remove ../feature-xyz

未コミット変更がある/ロックされている場合は -f (強制) オプションが必要です。

その他

prune, lock, unlock, moveなど:

  • prune はもう参照されなくなった作業ツリー情報を掃除します。
  • lockunlock は、ネットワーク共有やポータブルデバイス上でのツリーを誤って削除されないように制御します。

3. 並行作業(平行開発)を可能にする設計意図

この機能によって「別ブランチに切り替えて元の作業を中断…」という従来の手順を経ずに、 複数のブランチを別ディレクトリで同時に稼働 させられます。たとえば:

  • メイン機能を開発しつつ、並行してバグ修正用の作業ツリーを立てる。
  • 大型機能の実装と既存リリースの保守作業を同時並行で回す。
  • UI実験ブランチ、バックエンド改修ブランチ、ドキュメント整備ブランチをそれぞれ別作業ツリーで動かす。

さらに、AIエージェント(コード生成・レビュー支援ツールなど)をこの構成に入れれば:

  • “人が作業中” のツリーとは別に “AIエージェント用の作業ツリー” を立ち上げ、AIに下処理(ボイラープレート、テスト生成等)を並行して走らせる。
  • エンジニアが次のタスク設計・レビュー・統合に集中する一方、AIが別作業ツリーでコード生成・初期実装を進めておく、といった 人+機械の並行流動ワークフロー が実現可能です。
    つまり、worktree が「平行環境の物理的な場」を提供し、AIエージェントがその場で“もう一方の作業者”のように振る舞う――という使い方が可能です。

この構成により、開発の 待ち時間・切り替えコスト が低減し、タスク間の“中断”を最小化できます。

4. 導入時に押さえておきたい注意点

この便利な機能を現場で使う際、次のポイントは必ず確認しておきましょう。

  • 同じブランチを複数の作業ツリーでチェックアウトしてはいけません。変更競合や履歴破綻の原因になります。
  • 各作業ツリーは同じ.gitディレクトリ(オブジェクトデータベース)を共有するため、設定・環境(例えば node_modules、サブモジュール、ビルド成果物)は個別に管理する必要があります。
  • AIを並行稼働させるなら、コード生成→人レビュー→統合フローを明確に設計しておかないと、早さが“混乱”に変わる恐れがあります。
  • 作業ツリー数が増えると管理容易性・ディスク容量・ビルド環境維持のコストも増えるため、何を別に動かすべきかの判断が重要です。
  • 古い作業ツリーをそのまま放置すると、git worktree prune で掃除しないと管理ファイルが残るため注意が必要です。

5. 今、ぜひ活用すべき理由

  • 開発フローの“中断コスト”を減らせる:ブランチ切り替えやスタッシュ/ポップで時間を消費しがちな場面に対して改善効果が大きいです。
  • チームが“複数モード同時進行”を求められることが増えている今、保守・新機能・UI改修などを並列で進められる設計が価値を持ちます。
  • AI支援ツールを活用する流れが強まるなか、「AIも別作業ツリーで並走させられる」という構成を取ることで、人+AIという並行作業体制を技術インフラとして整えられます。
  • ワークツリーを活用することで、リポジトリを再度クローンする手間・重複取得の無駄が減り、ディスク・ネットワークコストも抑えられます。

以上のように、Git worktreeは “単一リポジトリで複数作業を同時並行で進めるための手段” であり、特に AIエージェントと開発者が並走する時代においてその価値が一層高まっています。
もし次のプロジェクトやチームワークフローで「同時に複数ブランチを走らせたい」「AIにも並行で作業させたい」と思っているなら、ぜひこの機能を検討してみてください。

参照元:
1. Git – git-worktree

類似投稿

コメントを残す