今回の収録内容:Git Worktreeマスター編
こんにちは!今日は開発作業でよくある「複数のブランチを同時に触りたい」問題を、Git Worktreeで解決する様子をドラレコ風にお届けします。実際の操作を一からお見せするので、一緒に手を動かしてみてください!
録画開始:現在の状況確認
タイムスタンプ [00:00:10]
まずは現在の作業環境を確認しましょう。ターミナルを開いて、現在のリポジトリ状況をチェックします。
# 現在の場所と状況を確認
pwd
# /Users/developer/my-project
git status
# On branch main
# Your branch is up to date with 'origin/main'.
# nothing to commit, working tree clean
git branch -a
# * main
# remotes/origin/main
# remotes/origin/feature/new-login
# remotes/origin/hotfix/critical-bug
現在の状況: メインブランチにいて、リモートには feature/new-login と hotfix/critical-bug ブランチがある状態です。
シーン1:既存ブランチでworktree作成
タイムスタンプ [00:01:20]
まずは既存のリモートブランチ feature/new-login を worktree として作成してみます。
実行前の準備
現在のディレクトリ構造:
my-project/
├── .git/
├── src/
├── package.json
└── README.md
コマンド実行
# 既存ブランチ用のworktreeを作成
git worktree add ../feature-login-work feature/new-login
実行結果:
Preparing worktree (checking out 'feature/new-login')
Branch 'feature/new-login' set up to track remote branch 'feature/new-login' from 'origin'.
HEAD is now at a1b2c3d Add login form validation
実行後の変化をチェック
タイムスタンプ [00:02:30]
# ディレクトリ構造を確認
ls -la ../
# drwxr-xr-x 8 developer staff 256 Jun 17 14:30 feature-login-work
# drwxr-xr-x 10 developer staff 320 Jun 17 14:25 my-project
# worktreeの状況確認
git worktree list
# /Users/developer/my-project a1b2c3d [main]
# /Users/developer/feature-login-work b2c3d4e [feature/new-login]
現在の状況: 新しいディレクトリ「feature-login-work」が作成され、feature/new-login ブランチがチェックアウトされました!
シーン2:新しいブランチでworktree作成
タイムスタンプ [00:03:45]
今度は全く新しいブランチを作成しながら worktree を作ってみます。
パターン1:新しいブランチ(current branchから分岐)
# 新しいブランチ用のworktreeを作成
git worktree add ../hotfix-work hotfix/session-fix
実行結果:
Preparing worktree (new branch 'hotfix/session-fix')
HEAD is now at a1b2c3d Initial commit for hotfix
パターン2:-bオプションで明示的にブランチ作成
# より明示的にブランチを作成
git worktree add -b feature/user-dashboard ../dashboard-work
実行結果:
Preparing worktree (new branch 'feature/user-dashboard')
HEAD is now at a1b2c3d Ready for dashboard development
現在の全体状況確認
タイムスタンプ [00:05:00]
git worktree list
# /Users/developer/my-project a1b2c3d [main]
# /Users/developer/feature-login-work b2c3d4e [feature/new-login]
# /Users/developer/hotfix-work a1b2c3d [hotfix/session-fix]
# /Users/developer/dashboard-work a1b2c3d [feature/user-dashboard]
ディレクトリ構造の全体像:
parent-directory/
├── my-project/ (メインリポジトリ - main branch)
├── feature-login-work/ (ログイン機能開発)
├── hotfix-work/ (セッション修正)
└── dashboard-work/ (ダッシュボード新機能)
シーン3:実際の同時作業デモンストレーション
タイムスタンプ [00:06:30]
それでは実際に複数のブランチで同時作業する様子をお見せします。
ターミナル分割での同時作業
ターミナル1(ログイン機能):
cd ../feature-login-work
echo "console.log('Login validation added');" >> src/login.js
git add .
git commit -m "Add client-side validation"
ターミナル2(緊急修正):
cd ../hotfix-work
echo "// Fix session timeout issue" >> src/session.js
git add .
git commit -m "Fix session timeout bug"
ターミナル3(新機能):
cd ../dashboard-work
mkdir src/components
echo "// Dashboard component" > src/components/Dashboard.js
git add .
git commit -m "Add dashboard component skeleton"
各worktreeの状況確認
タイムスタンプ [00:08:15]
# メインディレクトリから全体状況確認
cd my-project
git worktree list
# /Users/developer/my-project a1b2c3d [main]
# /Users/developer/feature-login-work c3d4e5f [feature/new-login] +1 commits
# /Users/developer/hotfix-work d4e5f6g [hotfix/session-fix] +1 commits
# /Users/developer/dashboard-work e5f6g7h [feature/user-dashboard] +1 commits
よくあるトラブルと対処法
トラブル1:「cannot lock ref」エラー
タイムスタンプ [00:09:30]
# このエラーが出た場合
git worktree add ../test-work existing-branch
# fatal: cannot lock ref 'refs/heads/existing-branch':
# ref 'refs/heads/existing-branch' is checking out
対処法:
# 既存のworktreeでそのブランチが使われていないか確認
git worktree list
# 使われている場合は、別のworktreeで別のブランチに切り替えるか
# そのworktreeを削除してから再実行
トラブル2:worktreeが削除できない
タイムスタンプ [00:10:45]
# ディレクトリを手動削除した後のエラー
git worktree remove ../deleted-directory
# fatal: validation failed, cannot remove working tree
対処法:
# prune コマンドでクリーンアップ
git worktree prune
# その後、必要に応じて残ったものを削除
git worktree remove ../directory-name --force
シーン4:後片付けの様子
タイムスタンプ [00:12:00]
作業が終わったら、worktreeをきれいに片付けましょう。
安全な削除手順
# 1. まず作業をコミット・プッシュ
cd ../hotfix-work
git push origin hotfix/session-fix
# 2. メインディレクトリに戻る
cd ../my-project
# 3. worktreeを削除
git worktree remove ../hotfix-work
# 4. 不要になったブランチの削除(オプション)
git branch -d hotfix/session-fix
# 5. 現在の状況確認
git worktree list
# /Users/developer/my-project a1b2c3d [main]
# /Users/developer/feature-login-work c3d4e5f [feature/new-login]
# /Users/developer/dashboard-work e5f6g7h [feature/user-dashboard]
ドラレコ風チートシート
基本コマンド(録画ポイント付き)
操作 | コマンド | チェックポイント |
---|---|---|
既存ブランチ worktree | git worktree add ../path existing-branch |
リモートブランチの存在確認 |
新規ブランチ worktree | git worktree add -b new-branch ../path |
ブランチ名の重複確認 |
状況確認 | git worktree list |
全worktreeのステータス |
削除 | git worktree remove ../path |
未コミット作業の確認 |
クリーンアップ | git worktree prune |
孤立したworktreeの整理 |
実践前チェックリスト
- 作業ディレクトリの準備: 親ディレクトリに十分な空きがあるか
- ブランチ確認:
git branch -a
でリモートブランチを確認 - 現在の作業保存: 未コミットの変更がないか確認
- 権限確認: ディレクトリ作成権限があるか
まとめ:Git Worktreeマスターへの道
今回のドラレコ風解説で、Git Worktreeの基本的な使い方から、実際の同時作業、トラブルシューティングまでを一通り体験していただきました。
開発効率UP のポイント:
- 複数の機能開発を同時進行できる
- 緊急修正対応中でも他の作業が止まらない
- ブランチ切り替えのコストが0に
- 各作業で異なる環境設定も可能
次回は「Git Worktree + VSCode マルチウィンドウ活用術」をお届け予定です。チャンネル登録(ブックマーク)をお忘れなく!
この記事が役に立ったら、実際に手を動かしてみてください。きっと開発効率が格段にアップするはずです!