🌳

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ツールです。

https://github.com/coderabbitai/git-worktree-runner

主な特徴として以下があります。

  • シンプルなコマンドで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コーディングツールとの統合により、複数のタスクを効率的に進められるようになります。

従来のブランチ切り替えによるコンテキストスイッチのコストに悩んでいる方は、ぜひ試してみてください。

Luup Developers Blog

Discussion