gitpane - 複数の Git リポジトリをターミナルでまとめて見る
一つのリポジトリだけを見ているなら、git status、lazygit、gitui で十分です。しかし実際の作業ディレクトリは、もっと散らばりがちです。プロダクトが複数サービスに分かれていたり、CLI、Web、ドキュメント、デプロイスクリプトを別々のリポジトリで管理していたりします。
そのとき困るのは、個別のリポジトリで何ができるかではなく、「いま自分の作業ディレクトリ全体で、どこに未コミット、未 push、未 pull の状態が残っているのか」です。
今日紹介する affromero/gitpane は、この問題に向いた Rust 製 TUI です。指定したディレクトリの下にある複数の Git リポジトリをスキャンし、ブランチ、dirty 状態、ahead/behind、worktree、stash、変更ファイル、コミットグラフを一つのターミナル画面に表示します。GitHub API では現在およそ 98 stars、0 forks、ライセンスは MIT。crates.io の最新バージョンは 0.7.1 です。
プロジェクト概要
| 項目 | 内容 |
|---|---|
| リポジトリ | affromero/gitpane |
| Stars | 約 98 |
| Forks | 0 |
| 主な言語 | Rust |
| ライセンス | MIT |
| crates.io 最新バージョン | 0.7.1 |
| 作成日 | 2026 年 2 月 24 日 |
作業ディレクトリ全体を見るツール
多くの Git TUI は、一つのリポジトリを深く扱うのが得意です。hunk の staging、diff の確認、rebase、コンフリクト解消などには、既存のツールが強いです。gitpane はそこに正面から競合するというより、もう一つ上の「ワークスペース全体」を見るための道具です。
起動すると、gitpane はデフォルトで ~/Code をスキャンします。--root を使えば別のディレクトリも指定できます。左にリポジトリ一覧、中央に選択中リポジトリの変更ファイル、右にコミットグラフと詳細が並びます。
リポジトリ一覧には、現在のブランチ、dirty 状態、ahead/behind、worktree 数、stash 数、変更ファイル数が出ます。十数個のディレクトリを行き来して git status を打つ前に、どこを見るべきかが分かるのがポイントです。
向いているのは、たとえば次のような人です。
- 複数のマイクロサービスや社内ツールを同時に扱う開発者。
- 複数の OSS リポジトリを行き来する人。
- git worktree で並行開発や AI agent 用の作業場所を作る人。
- 作業終了前に、どこかへ dirty state を置き忘れていないか確認したい人。
- lazygit や gitui の前に、ワークスペース全体の入口がほしい人。
三つのパネルが扱う情報
README のスクリーンショットでは、gitpane は三つのパネルで構成されています。情報量は多いですが、それぞれのパネルが答える問いははっきりしています。
リポジトリパネル は「どのリポジトリを見るべきか」を示します。dirty マーク、ahead/behind の矢印、worktree 数、stash 数、変更数が並ぶので、まず問題のありそうな場所を探せます。
変更ファイルパネル は「そのリポジトリで何が変わったか」を示します。リポジトリを選ぶと変更ファイルが出て、Enter で split diff を開けます。一時ファイルなのか、依存関係のロックファイルなのか、実際にコミットすべき変更なのかをすばやく判断できます。
コミットグラフパネル は「最近そのリポジトリで何が起きたか」を見せます。最大 200 件のコミットを表示し、コミットメッセージ、作者、短い hash で検索できます。完全な履歴分析ツールではありませんが、ワークスペース全体の画面から分岐状態を確認するには十分です。
worktree を見えるようにする価値
最近の開発では、worktree を使う機会が増えています。mainline の修正をしながら実験ブランチを残したり、複数の AI coding agent に別々の作業場所を与えたりするためです。単一リポジトリのビューだけだと、現在の checkout しか意識しなくなりがちです。
gitpane は linked worktree の数を表示し、展開して確認できます。これは地味ですが、今の開発環境には合っています。管理すべき対象は一つの checkout ではなく、一つのリポジトリが複数の作業コンテキストに分かれた状態だからです。
リアルタイム更新と操作
gitpane は filesystem watcher で変更を監視します。README によると、状態はおよそ 500ms 以内に更新されます。さらに右クリックのコンテキストメニューから、push、pull、rebase などの操作もできます。遠隔ブランチは origin <branch> の形で明示的に扱う設計です。
つまり、単なる静的な一覧ではありません。ターミナルに置いておき、変更が起きたら自動で更新し、ahead/behind に気づいたらその場で処理し、足りないリポジトリがあれば再スキャンまたは手動追加できます。
ただし、Git の書き込み操作に近づくほど慎重さは必要です。gitpane は「問題を見つけ、文脈に入るための入口」として使うのが自然です。複雑な rebase、コンフリクト解消、まとまったコミット作業は、慣れている Git ツールで行うほうが安全です。
設定
gitpane は TOML で、スキャンするルートディレクトリ、深さ、固定リポジトリ、除外ディレクトリ、更新間隔、テーマを設定できます。デフォルトでは ~/Code を見ますが、たとえば ~/src/github.com/owner/repo のような深い構造なら、scan_depth を上げる必要があります。
設定例は次のようになります。
root_dirs = ["~/Code", "~/work"]
scan_depth = 3
pinned_repos = ["~/Code/important-project"]
excluded_repos = ["node_modules", ".cargo", "target"]
[watch]
debounce_ms = 500
poll_local_secs = 5
poll_fetch_secs = 30
テーマも組み込みとカスタムの両方に対応しています。常時開いておくターミナルツールでは、見た目は単なる飾りではなく、長く使えるかどうかに関わります。
インストールと使い方
Rust が入っているなら、インストールはシンプルです。
cargo install gitpane
起動は次のようにします。
gitpane
gitpane --root ~/projects
README には macOS、Linux、Windows 向けの pre-built binary についても説明があります。ただし、GitHub Releases と crates.io のバージョン状態は同じとは限りません。チームで使うなら、どの配布元とバージョンを使うのかを決めておくのがよいです。
注意点
gitpane はまだ新しいプロジェクトです。日常のワークフローに入れる前に、いくつかの境界を意識したほうがよさそうです。
- 複数リポジトリの検出はディレクトリ構造と
scan_depthに依存する。 - linked worktree や submodule の
.git形式によっては、自動検出に注意が必要。 - push、pull、rebase は、対象リポジトリとブランチを確認してから実行する。
- チームに Git 操作ルールがある場合、最初は read-only なダッシュボードとして使う。
- pre-built binary が必要な場合は、crates.io と GitHub Releases の状態を分けて確認する。
それでも、中心的な価値ははっきりしています。Git をさらに複雑にするのではなく、「この作業ディレクトリ全体はいまどんな状態か」を見えるようにしてくれます。
まとめ
affromero/gitpane は、lazygit、gitui、通常の Git CLI を置き換えるものではありません。それらの前に置く、ワークスペース全体の overview です。複数リポジトリのブランチ、変更、遠隔との差分、worktree 状態を先に見てから、どのリポジトリに入るべきかを決められます。
開発ディレクトリに複数のリポジトリが並び、どれも少しずつ作業中になりがちな人なら、gitpane は試す価値があります。多リポジトリ管理で面倒な最初のステップ、つまり「どこに用事があるのかを見つける」ことを、一つのターミナル画面にまとめてくれます。