今日から使えるgit worktree:初心者向けやさしい解説と活用例
1. はじめに
Gitで複数のブランチを切り替えながら作業していると、「作業中の変更をstashしないといけない」「急なバグ修正で今の作業を中断したくない」といった悩みがよくあります。
そんなときに便利なのがgit worktreeです。この記事では、git worktreeの基本から、初心者でもすぐに使える活用例まで解説してみました。
2. git worktreeとは?
git worktreeは、1つのリポジトリから複数の作業用ディレクトリ(ワークツリー)を作成し、それぞれで異なるブランチを同時に扱えるGitの公式機能です。 従来のGitでは、1つのディレクトリで1つのブランチしか作業できず、ブランチを切り替えるたびに変更内容を退避する必要がありました。
git worktreeを使えば、複数のブランチを独立したディレクトリで同時に作業できるので、作業効率が大きく向上します。
3. git worktreeのメリット・デメリット
メリット
- 複数のブランチを同時に並行して作業できる
- ブランチ切り替え時にstashや一時コミットが不要
- 緊急対応やレビュー用の一時的な作業環境をすぐ用意できる
- ディスク容量を節約できる(リポジトリをフルクローンしなくてよい)
デメリット・注意点
- 作業ディレクトリが増えるので、管理がやや煩雑になる
- 間違ったディレクトリで作業してしまうリスクがある
4. git worktreeの基本操作
ワークツリーの追加
新しいワークツリーを作成して、別ブランチで作業したい場合は以下のコマンドを使います。
git worktree add
例:
git worktree add ../fix-bug fix-bug
(fix-bugブランチを../fix-bugディレクトリに展開)
既存ブランチのワークツリー追加
まだ存在しないブランチの場合は、自動的に新規ブランチが作成されます。
指定したブランチ名が存在しない場合、git worktree addはベースブランチ(デフォルトは現在のHEAD)から新しいブランチを作成してワークツリーを作ります。必要に応じて -b オプションで新規ブランチ名を明示できます。
ワークツリーの一覧表示
git worktree list
ワークツリーの削除
作業が終わったワークツリーは、以下のコマンドで安全に削除できます。
git worktree remove
5. 活用シーン・具体例
新機能開発とバグ修正の並行作業
新機能の開発中に「バグ修正の依頼」が来た場合、worktreeでバグ修正用のディレクトリを作成し、そちらで修正作業を進められます。
これにより、現在の作業内容をstashする必要がありません。
レビューやテスト用の一時環境
プルリクエストの内容を自分の環境でテストしたいとき、worktreeでそのブランチをチェックアウトすれば、メインの作業ディレクトリを汚さずに確認できます。
モノレポでの複数モジュール開発
フロントエンドとバックエンドを同時に開発したい場合、worktreeでそれぞれのブランチを展開し、並行して作業できます。
実際のところ、「1つの大きなリポジトリの中で複数のworktreeを使う」という運用もあり得ると思います。
6. よくあるトラブルとその防止策
-
ディレクトリ名の工夫
どのブランチの作業ディレクトリか分かるように、ディレクトリ名にブランチ名を含めるのがおすすめです。 -
誤操作防止
作業前にgit branch
やgit status
で、今どのブランチ・ディレクトリで作業しているか確認しましょう。 -
不要なワークツリーの削除
使い終わったワークツリーはgit worktree remove
で整理しましょう。
補足事項
- 安全面での補足
- ワークツリーを「削除」しても、作業ディレクトリのみが消され、コミット済みの内容やリポジトリ本体は削除されません。ただし、未コミットの変更は失われるため注意が必要です。
- worktreeの制限事項
- 1つのブランチは同時に複数のワークツリーでチェックアウトできません。
7. まとめ・次のステップ
git worktreeを使えば、複数のブランチを同時に安全かつ効率的に管理できて、stashや一時コミットの手間が減って緊急対応やレビューもスムーズです。 まずは小さなプロジェクトで試してみてはいかがでしょうか。
さらに詳しく知りたい方は、公式ドキュメント(英語)も参考にしてみましょう。