git-parsec — 1つのチケットでworktree作成からPRマージまで
(github.com/erishforG)Git worktreeベースの並列開発ワークフローを自動化するCLIツールです。
解決する課題
ブランチを切り替えずに複数のチケットを同時に進める場合、git worktreeは優れた選択肢です。
ただし実務で使うには、繰り返し作業が多く発生します。
- worktreeを作成してブランチ名を付ける →
parsec start PROJ-123の1行で - pushしてPRを作成し、チケットリンクを付ける →
parsec ship PROJ-123の1行で - CIを確認してマージし、worktreeを整理する →
parsec merge PROJ-123の1行で
毎回繰り返していた作業が、それぞれ1行のコマンドに減ります。
コアワークフロー
parsec start PROJ-123 # worktree + ブランチ + Jiraチケット連携
# ... コーディング ...
parsec ship PROJ-123 # push → PR作成(チケットタイトル/リンクを自動で含む)
parsec ci PROJ-123 # CIステータステーブルを出力
parsec merge PROJ-123 # CI待機 → squashマージ → worktree自動整理
主な機能
トラッカー連携
- Jira / GitHub Issues — チケットタイトルの自動反映、ステータス遷移、ボードビュー、インボックス
parsec ticket— ターミナルでチケット詳細を表示parsec board— JiraスプリントボードをCLIで確認
worktree管理
- Shell統合 —
parsec switchでworktree間のcd移動を自動化 - スタックPR —
--onオプションでPRチェーンを構成し、stack syncで一括rebase - Undo — 誤って整理したworktreeも一発で復旧
自動化
- Release — タグ + マージ + GitHub Release + changelogを自動生成
- Human / JSON / Quiet 出力モード — CIスクリプトと連携しやすい
- 27個のサブコマンド — start, list, status, ship, merge, ci, diff, sync, adopt, rename など
インストール
cargo install git-parsec
または GitHub Releases から macOS / Linux バイナリをダウンロードできます。
こんな方におすすめです
- 複数のチケットを同時に進める方(worktreeベースの並列開発)
- Jira + Git 間の繰り返し作業にうんざりしている方
- モノレポでコンテキストスイッチのコストを減らしたい方
- AIエージェント(Claude Code など)に独立した作業環境を与えたい方
リンク
- GitHub: https://github.com/erishforG/git-parsec
- インストール:
cargo install git-parsec
Rustで書かれており軽量で、既存のgitリポジトリにそのまま適用できます。
フィードバックや質問も歓迎です!
6件のコメント
最近、並列worktreeに関する技術ブログを見て興味を持ったものの、実装内容までは見られず残念だったので、このオープンソースで一度深く掘り下げてみたいですね!
以下は私が読んだブログ記事です。
https://medium.com/ajd-tech/…
ありがとうございます! ブログに書いていただいた内容も軽く拝見しましたが、とても素晴らしくまとめてくださいましたね。
機会があればぜひご覧いただいて、気に入らない点や改善したい点などがあれば、気軽に issue を登録するか PR を送ってください!
並列 worktree は
work dirty -> clean nicelyというやり方だと考えていて、これが今後の主な開発スタイルになると思います。
良いリポジトリだと思います。
ありがとうございます :) 私が考えていた点をうまく書いてくださっていますね。
worktreeベースで並列作業を強制するアプローチが印象的ですね。
私も複数のチケットを同時に処理するとき、
各作業環境を分離するために tmux + 複数の branch の組み合わせで運用しているのですが、
結局は状態管理がずっとこんがらがる問題がありました。
parsec のように start/ship/merge でライフサイクルをまとめてしまうほうが、
むしろミスを減らす方向になりそうですね。
気になる点があるのですが、
複数の PR が同時に上がっている状態で merge の順番が変わったり、
rebase が必要な状況では stack sync はどのように動作するのでしょうか?
ご関心をお寄せいただきありがとうございます!
stack syncは、親子関係に基づいてトポロジカル順序(topological order)で rebase を実行します。動作方式
ルートから BFS で巡回しながら、各子を親ブランチの上に rebase する構造です。main が更新されると、ルートから変更が自然に伝播します。
merge の順序が変わる場合
現在は、スタックの下側(親)から merge することを前提に設計されています。もし途中の PR が先に merge されると、そのノードの子は次回の stack sync 時に親を見つけられず失敗します。この場合は、手動で base を再指定する必要があります。
競合発生時
rebase 中に競合が発生した場合は、そのブランチだけを
rebase --abortでロールバックし、残りはそのまま続行します。どのチケットが成功/失敗したかはテーブルで表示されるため、失敗したものだけ手動で解決すれば大丈夫です。