四つのリポジトリを朝の同じ時間に回したい
四つの技術ブログを個人で運営していると、朝の数時間で複数のリポジトリに同時に手を入れたくなる瞬間があります。claudelab、gemilab、antigravitylab、rorklab——それぞれ独立したリポジトリでありながら、似た修正をまとめて進めたい。
以前は、ブランチを切り替えるたびにビルドが走り、依存関係の解決を待つ時間が積み重なっていました。一つのセッションでバグ修正を進めている最中に別の機能へ移ろうとすると、そのたびに手が止まる。
Claude Code の Worktree 機能を使い始めてから、この待ち時間がほとんど消えました。複数のブランチをそれぞれ独立したディレクトリに展開し、別々のセッションで同時に走らせる。実際に個人開発で並行運用してみて分かった勘所と、途中でつまずいた点を、順を追ってお伝えします。
Git Worktree の基本概念
Worktree とは
Git Worktree は、単一の Git リポジトリから複数のワークツリーを作成する機能です。各ワークツリーは独立したディレクトリで、異なるブランチをチェックアウトできます。
従来の方法(ブランチ切り替え):
main ← チェックアウト → feature-A
↓(時間がかかる)
feature-B ← チェックアウト
Worktree を使った方法:
main/ ← ~/project-main
feature-A/ ← ~/project-feature-a (独立したディレクトリ)
feature-B/ ← ~/project-feature-b (独立したディレクトリ)
各ワークツリーは独立しているため、同時に複数ブランチで作業でき、ブランチ切り替えによる遅延がありません。
Worktree の利点
- 並列開発: 複数ブランチを同時に進行できます
- 高速切り替え: ディレクトリ移動だけで済み、ブランチチェックアウトが不要です
- リソース効率: 各ワークツリーは独立した node_modules 等を持てます
- CI/CD 統合: 複数ブランチのビルド・テストを並列実行できます
まず手で覚える — git worktree add
Claude Code の便利フラッグに入る前に、素の Git コマンドを一度手で動かしておくと、後の挙動がすべて腑に落ちます。ここが並列開発の土台です。
# main のあるリポジトリのルートで実行
# feature/search 用のワークツリーを隣のディレクトリに作る
git worktree add ../project-feature-search feature/search
# まだ存在しないブランチなら -b で同時に作成
git worktree add -b feature/pagination ../project-feature-pagination作成したディレクトリに移動して、そこで Claude Code を起動します。
cd ../project-feature-search
claudeこの「別ディレクトリで、もう一つ Claude Code を立ち上げる」感覚がつかめれば、以降のフラッグは単なる省力化です。素の Git だけで完結するので、どの環境でも確実に動きます。
Claude Code の --worktree フラッグ
Claude Code は v2.1.49(2026年2月)で Worktree を組み込みサポートしました。--worktree(短縮形 -w)フラッグを使うと、指定したブランチのワークツリーを自動生成し、その中でセッションを開始できます。
claude --worktree feature/auth-systemこのコマンドは次を自動で行います。
- 現在のリポジトリから
feature/auth-systemブランチ用のワークツリーを作成 - 新しいディレクトリで Claude Code セッションを起動
- そのワークツリー内でコード編集・ファイル操作を実行
基本的な使用例
例1: 新機能ブランチで開発
# feature/user-dashboard 用ワークツリーを作成
claude --worktree feature/user-dashboard例2: バグ修正ブランチでの並列作業
# hotfix/api-timeout 用ワークツリーを作成
claude --worktree hotfix/api-timeout
# 別のターミナルウィンドウで
claude --worktree feature/paginationデスクトップアプリでは自動でワークツリーが作られる
ターミナルではなく Claude Code のデスクトップアプリを使う場合、新しいセッションを開くたびに自動でワークツリーが作成されます。-w を明示的に付ける必要はありません。セッション同士が互いのファイルを触らないため、片方で機能を作りながら、もう片方でバグを直す、といった進め方が自然にできます。
Worktree の管理
既存ワークツリーの確認
git worktree list出力例:
/home/dev/project abc1234 [main]
/home/dev/project-feature-auth def5678 [feature/auth-system]
/home/dev/project-feature-dash ghi9012 [feature/user-dashboard]
ワークツリーの削除
作業が完了したら、ワークツリーを削除します。
git worktree remove ../project-feature-auth参照だけが残っている場合は、次で掃除できます。
git worktree prune自動削除の条件を知っておく
Claude Code がサブエージェントやバックグラウンドセッションのために作ったワークツリーは、cleanupPeriodDays の設定日数を過ぎると自動で削除されます。ただし削除されるのは、未コミットの変更・未追跡ファイル・未 push のコミットがいずれも無い場合に限られます。
この条件は地味ですが実務では重要です。ログや生成物をワークツリー内に置いたまま放置すると、未追跡ファイルとみなされて自動削除の対象から外れ、いつの間にか古いワークツリーが積み上がります。片付けは自動任せにせず、区切りごとに git worktree list で棚卸しする習慣をおすすめします。
Isolation Mode(分離モード)
Claude Code の Worktree には Isolation Mode があり、各ワークツリー間で環境を完全に分離できます。
Isolation Mode とは
Isolation Mode では、以下が各ワークツリーに独立します。
node_modulesディレクトリ.envファイル- ビルド成果物(
dist/、build/など) - サーバープロセス(異なるポート番号で起動)
Isolation Mode の有効化
claude --worktree feature/payments --isolation環境変数の分離例
# main ブランチのワークツリー
cd ~/project
export API_KEY="prod-key-main"
export PORT=3000
# feature/payments のワークツリー
cd ~/project-feature-payments
export API_KEY="dev-key-payments"
export PORT=3001 # 異なるポートこれにより、複数の開発環境を同時に稼働させられます。
並行運用でつまずいた点 — ディスクとの付き合い方
四つのリポジトリをワークツリーで並べて回してみて、最初にぶつかったのはディスク容量でした。
Isolation Mode では node_modules がワークツリーごとに複製されます。便利さの裏で、リポジトリの数だけ依存ツリーが増える。ある朝、自動更新の処理が ENOSPC(No space left on device)で止まり、原因をたどると、片付け忘れた古いワークツリーがディスクを静かに埋めていました。
そこで運用を次のように整えました。
- 使い終えたワークツリーは、その場で
git worktree removeする。「あとで消す」は積み上がりの入り口です - 依存が重いリポジトリでは、常時並行する数を絞る。全部を同時に開かず、その朝に触る分だけ展開する
- 自動削除に任せる部分は、未追跡ファイルを残さない前提で設計する(ログは別ディレクトリへ退避)
並列数は「増やせるだけ増やす」ものではなく、手元のディスクと相談して決めるもの——そう捉えてから、詰まりが起きなくなりました。
最初の一歩
まずは、いま手元にあるリポジトリで git worktree add を一度試し、別ディレクトリで Claude Code をもう一つ立ち上げてみてください。二つのセッションが互いのファイルを触らずに進む感覚がつかめれば、そこから並行数を増やすのは自然な流れになります。
私自身、最初は一つのブランチで手一杯でしたが、いまは四つのリポジトリを朝の同じ時間帯に並べて回しています。実装の参考になれば幸いです。お読みいただきありがとうございました。