システムのバージョンアップや改修で「旧バージョン(A)と新バージョン(B)を同時に動かして比較したい」という場面は多いと思います。
そんなときに便利なのが git worktree です。
git worktree とは?
別フォルダに、別ブランチを同時にチェックアウトできる Git の仕組み です。
通常の Git は「1フォルダに1ブランチ」ですが、worktree を使うと複数ブランチを並列で扱えます。
■ 使い方
① メインプロジェクトへ移動
cd project-main
② バージョンA用の worktree を追加
git worktree add ../versionA-branch versionA-branch
③ バージョンB用の worktree を追加
git worktree add ../versionB-branch versionB-branch
④ フォルダ構成イメージ
/project-main → main ブランチ
/versionA-branch → versionA ブランチ
/versionB-branch → versionB ブランチ
作業ディレクトリは分かれていますが、Git としては1つのリポジトリを共有しています。
⑤ 削除したいとき
git worktree remove project-verA
■ git worktree が便利な理由
1. フォルダコピーが不要
コピー運用だと .env が混ざったり、不要ファイルが残ったり危険ですが、
worktree は Git がクリーンにブランチを展開するので安全。
2. ブランチ切り替えが不要
別フォルダに同時に checkout されるため、
versionA と versionB を同時に開いて作業できます。
3. バージョン比較が爆速
旧バージョンのバグ調査 → 新バージョンへ反映
これを並列で進められるので効率が段違い。
4. Docker での同時起動も簡単
たとえば、
- versionA → http://localhost:8081
- versionB → http://localhost:8082
というように同時起動して比較できます。
■ 注意点(重要)
- 同じブランチを2つの worktree に同時にチェックアウトはできない
- worktree 側には
.gitフォルダは作られず、親と共有される -
.envなど環境依存ファイルはフォルダごとに用意が必要
■ まとめ
| 作業内容 | コピー運用 | worktree |
|---|---|---|
| フォルダ複製 | 必要 | 不要 |
| 2バージョン同時作業 | 面倒 | 簡単 |
| 破損リスク | 高い | 低い |
| Git管理 | あいまい | 明確 |
| Docker 並列起動 | 手間 | 簡単 |
バージョンアップ作業や複数バージョン比較を行う際、git worktree は便利機能ですので一度触ってみるのはありかもしれないです!
参考記事