MENU

Git Worktreeの使い方とメリット徹底解説

Gitで複数のブランチを扱う際、「一度に一つのブランチしか作業できない」という制約に不便さを感じたことはありませんか?そんな時に便利なのが「git worktree」です。通常のgit checkoutではブランチを切り替えるたびに作業ディレクトリが変化し、複数作業を並行するのが難しくなります。一方、Git Worktreeを使えば、一つのリポジトリから複数のワークツリーを作成し、それぞれ異なるブランチを同時に操作可能です。本記事では、その仕組みや使い方、活用例までを詳しく解説します。

目次

Git Worktreeとは?基本の仕組みを理解する

Git Worktreeは、Gitのリポジトリに対して複数の作業ディレクトリ(ワークツリー)を作成できる機能です。通常は一つのリポジトリにつき一つの作業ディレクトリしか持てませんが、worktreeを利用することで同じ履歴を共有しながら、別々の場所にブランチを展開できます。これにより「ブランチAで開発しつつ、ブランチBでバグ修正」といった並行作業が可能になります。Git内部的には一つの.gitディレクトリを共有するため効率的で、ディスク容量の無駄も少なく、スムーズに複数タスクを進められるのが特徴です。

Git Worktreeを使うメリット

複数ブランチを同時にチェックアウトできる

従来のGit操作では、一度に一つのブランチしか作業できませんでした。しかしWorktreeを使えば、複数のブランチを同時に異なるディレクトリに展開し、それぞれ並行して作業可能です。例えば、メイン開発ブランチとバグ修正ブランチを同時に開き、環境を切り替える必要なく編集やテストを行えます。これによりコンテキスト切り替えの手間が減り、開発効率が大幅に向上します。

clone不要でディスク容量を節約

複数のブランチを扱うためにgit cloneを繰り返すと、その分だけリポジトリ全体が複製されディスクを圧迫します。Git Worktreeでは一つのリポジトリをベースに複数のワークツリーを作るため、履歴は共有されます。その結果、ブランチごとの追加ディスク消費は最小限に抑えられ、ストレージの効率利用が可能です。特に巨大なリポジトリを扱う際に大きなメリットとなります。

CI/CDやレビュー環境の構築に便利

Git Worktreeは開発環境だけでなく、CI/CDやコードレビューにも役立ちます。例えば複数のブランチを同時にチェックアウトして、自動テストを並行で実行したり、レビュー対象ブランチを独立したワークツリーで検証したりできます。これにより開発フロー全体が効率化され、レビューやデプロイの速度向上にもつながります。

Git Worktreeの基本コマンド

worktreeの追加 git worktree add

新しいワークツリーを追加するには以下を使います。

git worktree add <path> <branch>

指定したパスに作業ディレクトリが作られ、その中で指定ブランチを扱えます。新規ブランチを作りながら追加することも可能で、柔軟に開発環境を増やせます。

worktreeの一覧確認 git worktree list

現在利用中のワークツリーを確認するには次を使います。

git worktree list

登録されたすべてのワークツリーのパスと関連ブランチが一覧表示され、作業状況を把握できます。複数ブランチを同時に展開しているときに非常に便利です。

worktreeの削除 git worktree remove

不要になったワークツリーは以下で削除可能です。

git worktree remove <path>

これにより作業ディレクトリが削除され、リポジトリ側からも参照が外れます。古い作業環境を整理する際に活用しましょう。

よくあるユースケース

バグ修正と新機能開発を並行して進める

メイン開発を進めている最中にバグ修正が必要になることはよくあります。Worktreeを使えば、新機能用ブランチと修正用ブランチを別ディレクトリに展開できるため、切り替え不要で並行作業が可能です。

複数環境(ステージング・本番)での確認

本番環境とステージング環境用のブランチを同時に展開し、それぞれの挙動を比較するのに便利です。ディレクトリを分けておくことで、環境ごとのテストや設定変更もスムーズに行えます。

レビュー用ブランチの検証

プルリクエストのレビュー時に、対象ブランチを独立したWorktreeに展開すれば、既存作業を邪魔せずにコード確認やテストができます。レビュアーが効率的に検証できるのは大きな利点です。

Git Worktreeを利用する際の注意点

Worktreeは便利ですが、いくつか注意が必要です。まず、複数のワークツリーで同じファイルを同時編集すると競合の原因になります。また、不要になったWorktreeを放置するとディレクトリ構造が複雑化し、管理しにくくなります。さらに、チームで利用する場合はワークツリーのパスや運用ルールを事前に共有することが重要です。ベストプラクティスを守れば、効率的かつ安全に運用できます。

Git Worktreeと他の方法の比較

Git Worktreeはgit clonegit stashと異なるアプローチを提供します。cloneは完全コピーを作成するため容量を消費し、stashは一時的に変更を退避するだけで複数ブランチの同時作業には不向きです。一方Worktreeは履歴を共有しながら複数のブランチを扱えるため効率的です。特にMonorepo環境では複数サービスを同時に開発する場面が多く、Worktreeの導入効果が大きいでしょう。

まとめ

Git Worktreeは、複数ブランチを効率的に扱える強力な機能です。従来のgit checkoutgit cloneでは得られない柔軟性と効率性を提供し、開発スピードを大幅に高めます。特にバグ修正やレビュー対応、複数環境のテストにおいて大きなメリットがあります。これからGitを使いこなしたい方にとって、Worktreeは必ず覚えておきたいコマンドです。ぜひ実際の開発プロジェクトで活用してみてください。

プログラミングの独学におすすめ
プログラミング言語の人気オンラインコース
独学でプログラミングを学習している方で、エラーなどが発生して効率よく勉強ができないと悩む方は多いはず。Udemyは、プロの講師が動画で実際のプログラムを動かしながら教えてくれるオンライン講座です。講座の価格は、セール期間中には専門書籍を1冊買うよりも安く済むことが多いです。新しく学びたいプログラミング言語がある方は、ぜひUdemyでオンライン講座を探してみてください。
目次