複数ブランチの開発環境を一瞬で切り替える
Git worktreeを使って、ブランチごとに独立した作業ディレクトリを作成・管理するCLIツールです。
- メインブランチで作業中に、緊急のバグ修正が入った
- 複数の機能ブランチを並行して開発したい
- PRレビュー用に別ブランチをすぐに確認したい
.envなどgitignoreされたファイルも新しい作業環境にコピーしたい
npm install -g wturboプロジェクトのルートに wturbo.yaml を作成:
base_branch: main
# gitignoreされているファイルを新しいworktreeにコピー
copy_files:
- .env
- .env.local
# 大きなディレクトリはコピーせずsymlinkを張る
link_files:
- node_modules# 新しいブランチ用のworktreeを作成
wturbo create feature/awesome-feature
# 作業ディレクトリに移動
cd ../worktree-feature-awesome-feature
# 作業完了後、worktreeを削除
wturbo remove feature/awesome-feature新しいworktreeを作成します。
wturbo create feature/new-feature
wturbo create bugfix/urgent-fix処理内容:
git worktree addでブランチ用の作業ディレクトリを作成(base_branchからブランチを作成)copy_filesで指定したファイルをコピーlink_filesで指定したファイル/ディレクトリにsymlinkを作成(copy_filesより優先)env.fileで指定した環境変数ファイルをコピー(env.adjustが設定されている場合はポート等を調整してコピー)docker_compose_fileが設定・存在する場合は worktree にコピーしてポート衝突を自動調整start_commandを実行(設定時のみ)
オプション:
-p, --path <path>- worktreeの作成場所を指定(デフォルト: 親ディレクトリにworktree-<branch名>で作成)--no-create-branch- 既存のブランチを使用(新規作成しない)
worktreeを削除します。
wturbo remove feature/new-feature処理内容:
docker_compose_fileが worktree に存在する場合はdocker compose downを実行(end_commandが未設定の場合)end_commandを実行(設定時のみ)git worktree removeでworktreeを削除
オプション:
-f, --force- 未コミットの変更があっても強制削除
現在のworktree一覧を表示します。
wturbo status出力例:
🌿 Git Worktrees (3 total)
→ main: /Users/me/project
feature/auth: /Users/me/worktree-feature-auth
bugfix/login: /Users/me/worktree-bugfix-login
以下のいずれかのパスに設定ファイルを配置します(優先順位順):
wturbo.yamlwturbo.yml.wturbo.yaml.wturbo.yml.wturbo/config.yaml.wturbo/config.yml
base_branch: maingitignoreされているファイルや設定ファイルを新しいworktreeにコピー:
copy_files:
- .env
- .env.local
- .claude # ディレクトリも可
- config/local.json重いディレクトリ(node_modules など)はコピーせず、元リポジトリを参照するsymlinkを作成:
link_files:
- node_modules
- .cache同じパスが
copy_filesとlink_filesの両方にある場合、link_filesが優先されます。
worktree作成時・削除時にスクリプトを実行:
# 作成後に実行(依存関係のインストールなど)
start_command: ./scripts/setup.sh
# 削除前に実行(クリーンアップなど)
end_command: ./scripts/cleanup.shbase_branch: main
docker_compose_file: ./docker-compose.yml
copy_files:
- .env
- .env.local
- .secrets
- config/
link_files:
- node_modules
- .cache
start_command: npm install && npm run db:migrate
end_command: docker compose down
env:
file:
- .env
- .env.local
adjust:
APP_PORT: 1000 # ポート番号に+1000
DB_PORT: 1000| 項目 | 型 | 説明 |
|---|---|---|
base_branch |
string | ベースブランチ名(デフォルト: main) |
docker_compose_file |
string | Docker Composeファイルのパス |
copy_files |
string[] | コピーするファイル/ディレクトリ |
link_files |
string[] | symlinkを作成するファイル/ディレクトリ(copy_files より優先) |
start_command |
string | worktree作成後に実行するコマンド |
end_command |
string | worktree削除前に実行するコマンド |
env.file |
string[] | 環境変数ファイルのリスト |
env.adjust |
object | 環境変数の調整(数値: 加算, 文字列: 置換, null: 削除) |
- Node.js 18+
- Git
MIT