git worktree コマンド入門:ブランチを並行して作業する方法
git worktree は複数のブランチを同時にチェックアウトして作業できるコマンドです。通常はブランチを切り替えると作業中のファイルも変わりますが、worktree を使うと別ディレクトリに別ブランチを展開したまま並行作業できます。
早わかりまとめ
| 操作 | コマンド |
|---|---|
| worktree を追加する | git worktree add ../branch-dir branch-name |
| worktree 一覧を確認する | git worktree list |
| worktree を削除する | git worktree remove ../branch-dir |
| 新しいブランチで追加する | git worktree add -b new-branch ../branch-dir |
| 不要な参照を掃除する | git worktree prune |
worktree が役立つ場面
- 作業中に別ブランチの緊急バグを修正したい
- レビュー中のブランチを手元で動かして確認したい
- 複数フィーチャーブランチを並行して開発したい
git stashで退避せずにブランチを切り替えたい
基本的な使い方
worktree を追加する
# main ブランチを作業しながら feature ブランチも展開する git worktree add ../my-feature feature # ディレクトリ構成 # project/ ← 元のリポジトリ(main ブランチ) # my-feature/ ← worktree(feature ブランチ)
../my-feature に feature ブランチがチェックアウトされた状態で展開されます。
新しいブランチを作りながら追加する
# -b でブランチを新規作成して追加 git worktree add -b hotfix-login ../hotfix-login main # main から分岐した hotfix-login ブランチが ../hotfix-login に展開される
worktree 一覧を確認する
git worktree list
/Users/user/project abc1234 [main] /Users/user/my-feature def5678 [feature] /Users/user/hotfix-login ghi9012 [hotfix-login]
worktree で作業する
# worktree ディレクトリに移動して普通に作業できる cd ../my-feature git add . git commit -m "add feature" git push origin feature
元のリポジトリと同じ .git を共有しているので、コミット・プッシュも普通にできます。
worktree を削除する
# worktree を削除(ディレクトリも削除される) git worktree remove ../my-feature # ディレクトリを手動で削除した場合は prune で参照を掃除する git worktree prune
よくある使い方:緊急バグ対応
# 1. 現在の作業(feature ブランチ)はそのまま # 2. main から hotfix 用の worktree を追加 git worktree add -b hotfix-xxx ../hotfix-xxx main # 3. hotfix ディレクトリで修正・コミット・プッシュ cd ../hotfix-xxx # 修正作業... git commit -m "fix: xxx" git push origin hotfix-xxx # 4. 元の作業ディレクトリに戻る cd ../project # feature ブランチの作業を続ける # 5. hotfix worktree を削除 git worktree remove ../hotfix-xxx
git stash で退避する必要がなく、作業の切り替えがスムーズです。
注意事項
- 同じブランチを複数の worktree で同時チェックアウトはできない
- worktree 内で
git checkoutは使えない(別ブランチへの切り替え不可) .gitディレクトリは元のリポジトリにしかない(worktree は.gitファイルを持つ)
まとめ
| やること | コマンド |
|---|---|
| ブランチを別ディレクトリで展開 | git worktree add ../dir branch |
| 新ブランチで追加 | git worktree add -b new-branch ../dir |
| 一覧確認 | git worktree list |
| 削除 | git worktree remove ../dir |
| 参照の掃除 | git worktree prune |
Git の基本的なブランチ操作については「Git & GitHub Tips 集:基本を知っている人向け」も参照してください。