ぶべ
git worktree × tmux でClaude Codeの並列開発を快適にする
2026年05月09日
見出しはありません
要約を生成中...
Claude Codeを使い始めてから、1つのリポジトリに対して複数のタスクを同時並行で走らせたい場面が一気に増えました。
「機能Aの実装をClaude Codeに任せながら、別のタブでバグ修正を進める」みたいなことを、ブランチ切り替えのストレスなくやりたい。そこで使い始めたのが git worktree と tmux の組み合わせです。
従来のように git switch でブランチを切り替える運用だと、Claude Codeでの並列開発と相性が悪いポイントがいくつかあります。
.nextのキャッシュが頻繁に壊れる結果として「Claude Codeの作業が終わるのを待つ時間」が発生してしまい、せっかくの並列性が活かせません。
git worktreeを使うと、1つのリポジトリから複数の作業ディレクトリを生やせます。それぞれが独立したブランチをチェックアウトしているので、お互いを邪魔しません。
# メインリポジトリの隣に worktrees ディレクトリを作って運用
git worktree add ../myapp-feature-a feature/a
git worktree add ../myapp-bugfix-b bugfix/b
これで ../myapp-feature-a と ../myapp-bugfix-b がそれぞれ独立した作業ディレクトリになります。node_modulesも別々に持てるので、依存パッケージのバージョン違いで悩むこともありません。
命名のコツ:worktreeのディレクトリ名にブランチ名を含めておくと、tmuxのウィンドウ名やシェルのプロンプトで「いまどのタスクをやっているか」がひと目で分かるようになります。
worktreeを切ったら、各ディレクトリに対してtmuxセッションを立ち上げます。僕のフローはざっくりこんな感じです。
claude(Claude Code)を起動こうしておくと、Ctrl+b + 数字キーでウィンドウを切り替えるだけで、別タスクの状況にすぐアクセスできます。Claude Codeが何かを質問してきたら、そのウィンドウに切り替えて答えるだけ。
毎回手で git worktree add して cd して tmux new-window して……をやるのは面倒なので、シェル関数にまとめてしまいます。
function wt() {
local branch=$1
local dir="../$(basename $(pwd))-${branch//\//-}"
git worktree add "$dir" "$branch" 2>/dev/null || git worktree add "$dir" -b "$branch"
tmux new-window -n "$branch" -c "$dir"
}
これで wt feature/login と打つだけで、worktreeの作成からtmuxウィンドウの立ち上げまで一気通貫で完了します。
worktreeは便利ですが、放置していると地味にディスクを食います。マージ済みのブランチに紐づくworktreeは定期的に消しましょう。
# worktree一覧を確認
git worktree list
# 不要なworktreeを削除
git worktree remove ../myapp-feature-a
git worktree prune はディレクトリを手動で削除してしまったあとのメタデータ掃除用。ディレクトリごと消したいときは git worktree remove を使うのが安全です。
Claude Codeを使うと、コードを書いてもらっている数分〜数十分は「自分は何もしなくていい」時間が生まれます。この時間をどう使うかで、1日のアウトプット量がまったく変わってきます。
worktree × tmuxの組み合わせは、その「余白」を別タスクで埋めるための最小コストの仕組みだと感じています。並列で2〜3タスクが進む状態を作れると、体感の生産性は単純に倍以上になります。
もしまだ git switch で頑張っている人がいたら、ぜひ一度試してみてください。
テストです。
コメント
まだコメントはありません。