git worktree コマンド入門:ブランチを並行して作業する方法

スポンサーリンク

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-featurefeature ブランチがチェックアウトされた状態で展開されます。

新しいブランチを作りながら追加する

# -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 集:基本を知っている人向け」も参照してください。