git-worktree-runnerで複数ブランチを同時に開発する
本記事は、Luup Advent Calendar 2025の8日目の記事になります。
こんにちは、Operation開発チームでバックエンドを担当している大瀧です。
今回は、複数ブランチでの並行開発を効率化するCLIツール「git-worktree-runner(gtr)」についてご紹介します。
ローカルでのコードレビューや、機能開発の合間にhotfixの対応をしたり...。日々の開発で頻繁にブランチを切り替える場面は多いと思います。その度にgit stashで作業を退避して、後でgit stash popで戻して...という作業に消耗していませんか?
あるいはgit worktreeを使っているけど、worktreeを作成するたびに依存関係のインストールや、.gitignoreに指定されている.envファイルなどのコピー作業が必要になるのも煩わしいですよね。
そんな方にこそ、git-worktree-runnerをおすすめしたいです!
git worktreeとは
まず、git worktreeについて簡単に説明します。git worktreeはGitの機能で、同じリポジトリの複数のブランチを異なるディレクトリで同時にチェックアウトできるようにするものです。
通常のブランチ切り替えでは、以下のような課題があります。
- 作業中の変更をstashする必要がある
- 依存関係の再インストールが必要になることがある
- コンテキストスイッチのコストが高い
git worktreeを使えば、各ブランチが独立したディレクトリとして存在するため、これらの問題を解決できます。
しかし、git worktree自体にも課題があります。
- worktreeを作成するたびに
npm installなどの依存関係のインストールが必要 -
.envなどの.gitignoreに指定されているファイルは手動でコピーが必要 - worktreeのパスを覚えておく必要があり、エディタで開くのに手間がかかる
git-worktree-runnerはこれらの課題を解決してくれます。
git-worktree-runnerとは
git-worktree-runner(gtr)は、CodeRabbitが開発したgit worktreeの操作を簡単にするCLIツールです。
主な特徴として以下があります。
- シンプルなコマンドでworktreeを作成・管理
- エディタ(Cursor、VS Code、Zed)との統合
- AIコーディングツール(Claude Code、Codexなど)との統合
- ファイルの自動コピー機能
- フック機能による自動化
インストール方法
macOS/Linuxでのインストールは以下の通りです。
git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
sudo ln -s "$(pwd)/bin/git-gtr" /usr/local/bin/git-gtr
これでGitのサブコマンドとしてgit gtrが使えるようになります。
基本的な使い方
初期設定
まず、デフォルトのエディタとAIツールを設定します。
git gtr config set gtr.editor.default vscode
git gtr config set gtr.ai.default claude
worktreeの作成
新しいworktreeを作成するには以下のコマンドを実行します。
git gtr new my-feature
これでmy-featureブランチ用のworktreeが作成されます。
エディタで開く
作成したworktreeをエディタで開くには以下のコマンドを実行します。
git gtr editor my-feature
設定したデフォルトエディタ(上記の例ではVS Code)でworktreeが開きます。
AIツールの起動
worktreeでAIコーディングツールを起動するには以下のコマンドを実行します。
git gtr ai my-feature
設定したデフォルトAIツール(上記の例ではClaude Code)が起動します。
worktreeの削除
作業が完了したらworktreeを削除します。
git gtr rm my-feature
主なコマンド一覧
| コマンド | 説明 |
|---|---|
git gtr new <branch> |
新しいworktreeを作成 |
git gtr editor <branch> |
worktreeをエディタで開く |
git gtr ai <branch> |
AIコーディングツールを起動 |
git gtr run <branch> <command> |
worktree内でコマンドを実行 |
git gtr rm <branch> |
worktreeを削除 |
git gtr list |
すべてのworktreeを一覧表示 |
便利な設定
ファイルやディレクトリの自動コピー
worktree作成時に特定のファイルを自動でコピーする設定ができます。環境変数ファイルなどに便利です。
設定方法は2つあります。
方法1: git configで設定
git gtr config add gtr.copy.include "**/.env.local"
git gtr config add gtr.copy.include "**/.env.example"
git gtr config add gtr.copy.include "**/*.config.js"
方法2: .worktreeincludeファイルで設定
リポジトリのルートに.worktreeincludeファイルを作成し、.gitignoreと同様の構文でパターンを記述します。
# 環境変数ファイル
**/.env.example
**/.env.local
# 設定ファイル
*.config.js
# AIツール用の設定
**/CLAUDE.md
両方の設定がある場合はマージされます。本番環境のシークレットなど機密情報のコピーには注意してください。
ディレクトリの場合
node_modulesなどの依存関係ディレクトリをコピーすることで、worktree作成後の依存関係インストール時間を短縮できます。
# 依存関係ディレクトリをコピー
git gtr config add gtr.copy.includeDirs "node_modules"
# Claude CodeやSerenaの設定ディレクトリやコンテキストをコピー
git gtr config add gtr.copy.includeDirs ".claude"
git gtr config add gtr.copy.includeDirs ".serena"
フックの設定
worktree作成後や削除後に自動で実行するコマンドを設定できます。
# worktree作成後に実行
git gtr config add gtr.hook.postCreate "npm install"
# worktree削除後に実行
git gtr config add gtr.hook.postRemove "echo 'worktree removed'"
実際の開発フロー
実際の開発では以下のようなフローで使用しています。
# 機能Aのworktreeを作成してエディタで開く
git gtr new feature-a
git gtr editor feature-a
# 別ターミナルで機能Bのworktreeを作成してAIツールで開発
git gtr new feature-b
git gtr ai feature-b
# それぞれ独立して開発を進められる
# 作業完了後
git gtr rm feature-a
git gtr rm feature-b
これにより、複数の機能を並行して開発する際のコンテキストスイッチのコストを大幅に削減できます。
AIエージェントとの相性
git-worktree-runnerは、Claude CodeなどのAIコーディングエージェントとの相性が良いです。
- 各worktreeが独立しているため、複数のAIエージェントを並行して動かせる
- 一つのタスクをAIに任せている間、別のworktreeで手動開発を進められる
- AIが生成したコードの影響範囲が明確に分離される
まとめ
git-worktree-runnerを使うことで、複数ブランチでの並行開発がより簡単になります。特にAIコーディングツールとの統合により、複数のタスクを効率的に進められるようになります。
従来のブランチ切り替えによるコンテキストスイッチのコストに悩んでいる方は、ぜひ試してみてください。
Discussion