公式リポジトリ: https://github.com/coderabbitai/git-worktree-runner
ここに書いているのはあくまで一例です。プロジェクトの規模や使っている AI / エディタにあわせて、ほどよく削ったり足したりしてください。
※ v2 以降はコマンドが
gtrではなくgit gtrに変わっているので、以下はgit gtr前提で書いています。
なぜ使うのか
- ブランチを行き来するたびに
npm installし直す手間を減らしたい。 - worktree ごとに依存・キャッシュを分離して、並行作業(レビュー用ブランチ・修正用ブランチなど)を安全に走らせたい。
- worktree 作成直後に「依存インストール」「Serena などのインデックス作成」まで自動で終わっていてほしい。
git worktree だけでも頑張れば同じことはできますが、コマンドが長くなりがちなので、日常的に使うならラッパーがあると楽です。
導入(最小ステップ)
macOS / Linux 想定。Windows なら Git Bash から同じノリでいけます。
git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
# 実行ファイルを PATH に通す(README に合わせた例)
sudo ln -s "$(pwd)/bin/git-gtr" /usr/local/bin/git-gtr
# 好みでショートカットを貼っておくと楽
echo "alias gtr='git gtr'" >> ~/.zshrc # or ~/.bashrc
source ~/.zshrc
以降、このメモでは git gtr と書きますが、上の alias を入れていれば単に gtr と打っても同じです。
設定の分け方イメージ
- グローバル(一度きり): よく使うエディタ / AI ツールのデフォルト
- リポジトリ単位: worktrees の配置場所、コピー対象、フック(インストールやインデックス作成)
以下の例ではこの切り方をしています。
グローバル初期設定(1回やっておく)
# 好きなエディタ / AI ツールをグローバルデフォルトに
git gtr config set gtr.editor.default cursor --global # or vscode, zed
git gtr config set gtr.ai.default claude --global # or aider, codex, cursor, continue
プロジェクトごとの初期設定例
cd ${project_dir}
# worktree はリポジトリ直下の .worktrees/ にまとめる
git gtr config set gtr.worktrees.dir .worktrees
# .env は新しい worktree にコピーしない(多値)
git gtr config add gtr.copy.exclude "**/.env"
# worktree 作成直後に依存インストール
git gtr config add gtr.hook.postCreate 'cd "$WORKTREE_PATH" && npm ci'
# Serena MCP でプロジェクトのインデックスを張る例
git gtr config add gtr.hook.postCreate \
'cd "$WORKTREE_PATH" && uvx --from git+https://github.com/oraios/serena serena project index'
WORKTREE_PATHは gtr 側がフックに渡してくれる環境変数。- Serena を使っていないなら、最後の行は丸ごと消して OK です。
よく使うコマンド
git gtr new <branch> # <branch> 用の worktree を作る
git gtr editor <branch> # その worktree をエディタで開く
git gtr ai <branch> # その worktree で AI ツールを起動
git gtr rm <branch> # worktree を削除(--delete-branch でブランチも削除)
cd "$(git gtr go <branch>)" # worktree のパスへジャンプ
git gtr list # すべての worktree を一覧
git gtr go 1 とすると「元のリポジトリ」に戻れるので、覚えておくと便利です。
追加設定の例(必要になったら)
プロジェクトによっては、もう少しフックを厚めにしておくと楽です。
# エディタ / AI ツールをプロジェクト単位で上書きしたい場合
git gtr config set gtr.editor.default vscode
git gtr config set gtr.ai.default codex
# worktree 作成直後にビルドまで回したい場合
git gtr config add gtr.hook.postCreate "npm ci"
git gtr config add gtr.hook.postCreate "npm run build"
# 好みで lint / test も
# git gtr config add gtr.hook.postCreate "npm test"
診断・ヘルプ系
git gtr doctor # 依存や環境のヘルスチェック
git gtr adapter # 使えるエディタ / AI アダプタ一覧
git gtr list # worktree 一覧(ブランチとパスが出る)
git gtr clean # 使われていない worktree を掃除
git gtr help # 一覧ヘルプ
git gtr version # バージョン表示
運用のコツ
-
フックに「依存インストール」「Serena の index」などを入れておく → ブランチを切って worktree を作った時点で、ほぼ「開けばすぐ書ける」状態になる。
-
gtr.worktrees.dir = .worktreesにして、リポジトリ直下に揃える → 相対パス前提のスクリプトを書きやすく、キャッシュの位置も分かりやすい。.gitignoreに/.worktrees/を足すのを忘れずに。 -
使い終わった worktree は意識的に掃除する
git gtr rm <branch> # まず gtr 側で削除 git worktree prune # git 純正側の孤児も掃除ブランチごといらなくなったら
git gtr rm <branch> --delete-branchまでやってしまうとスッキリします。
うまくハマると、新しいブランチを切った直後に npm ci や Serena の index が自動で走るので、lint / test までの立ち上げコストがかなり軽くなります。