このプロジェクトについて

# manygit — 複数リポジトリ対応Git CLIマネージャー manygitは、gitリポジトリの**ツリー全体**にlazygitスタイルのターミナルUIを提供する単一のCLIツールです。フォルダを指定すると、その下にあるすべてのリポジトリが1画面に表示され、各リポジトリのブランチと、先行(ahead)、遅延(behind)、未コミット(dirty)の状態が確認できます。ハイライトされたリポジトリに対して、フェッチ、プル、プッシュ、ブランチ切り替えが可能で、さらにコミットグラフの表示、スクリプトの実行、GitHubプルリクエストの閲覧(`gh` CLIがインストールされている場合)も行えます。 `gita`や`mani`のようなバッチ実行ツールとは異なり、リポジトリを登録するための設定ファイルや、読み返すための出力は不要です。manygitはフォルダを走査してリポジトリを自動検出し、リスト内で操作を完結できます。 ## 主な機能 - **自動検出**: フォルダ(デフォルト深度3)をスキャンしてgitリポジトリを検出し、親ディレクトリごとにグループ化します。 - **統合ステータス表示**: ブランチ、先行/遅延数、未コミット状態、ローカルのみのリポジトリを一目で確認できます。 - **直接アクション**: 同期(フェッチ+早送りプル)、プッシュ、ブランチ切り替え、変更の破棄(確認付き)、1つまたは全リポジトリのフェッチ。 - **コミットグラフ**: コミット履歴の全画面表示。 - **スクリプトランナー**: リポジトリ全体でスクリプトを定義・実行。 - **GitHub PRペイン**: オープン中のPRとレビュー依頼を一覧表示(`gh` CLIが必要)。PRのブランチをワンキーでチェックアウト可能。 - **平易な英語でのGit操作**: 「rebase current onto master」のようなリクエストを入力すると、AIハーネスがgitコマンドに変換し、確認を求めてから実行します。 - **リポジトリ内シェル**: ハイライトされたリポジトリで永続的なシェルプロンプトを開き、任意のコマンドを実行できます。 - **フィルタリング**: リポジトリを名前、ブランチ、タグでフィルタリング。変更/先行/遅延のあるリポジトリのみ表示。 - **テーマ**: 複数のカラーテーマ(default、serika_dark、dracula、nord、catppuccin、8008)。 - **自己更新**: 変更ログ表示付きの内蔵アップデーター。 ## インストール **Linux** ```bash curl -fsSL https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.sh | bash ``` **macOS** ```bash brew tap rabeeh-ta/manygit && brew trust rabeeh-ta/manygit && brew install manygit ``` **Windows(PowerShell)** ```powershell irm https://raw.githubusercontent.com/rabeeh-ta/manygit/main/install.ps1 | iex ``` その他の方法: `go install github.com/rabeeh-ta/manygit@latest`(Go 1.24以降)、またはソースからビルド。特定のバージョンを指定するには、インストーラーにタグを渡します(例: `bash -s -- v1.0.7`)。 ## 使用方法 ```bash manygit # 現在のディレクトリをスキャン manygit --root ~/work # 特定のフォルダをスキャン manygit stats # GitHubダウンロード統計を表示 ``` ## キーバインド(概要) - `1`-`7`: ペインにフォーカス(リポジトリ、スクリプト、ブランチ、PR、グラフ、変更、出力) - `j`/`k`: フォーカス中のパネル内で移動 - `enter`: コンテキスト依存(ブランチ表示、チェックアウト、スクリプト実行、PRブランチのチェックアウト) - `s`/`p`: ハイライトされたリポジトリを同期(フェッチ+ffプル)/ プッシュ - `d`/`D`: 変更を破棄(追跡のみ / 未追跡も含む) - `f`/`r`: 1つフェッチ / すべて再フェッチ - `g`: コミットグラフを全画面表示 - `n`: ニュースフィードを全画面表示(AI要約の見出し) - `t`: 最新タグ表示の切り替え - `F`: 変更/先行/遅延のあるリポジトリのみにフィルタリング - `/`: リストのフィルタリング(リポジトリは名前とブランチ、ブランチは名前、スクリプトは名前で一致) - `:`: AIハーネスによる平易な英語でのgitコマンド - `!`: ハイライトされたリポジトリでシェルを開く - `o`: エディタでリポジトリを開く - `z`: フォーカス中のペインをズーム - `esc`: 状態を1つ戻る - `?`: ヘルプオーバーレイ(キーバインドと設定) - `q`または`esc esc`: 終了 ## 設定 任意の設定ファイル `~/.config/manygit/config.yml`: ```yaml max_depth: 3 # ルートより下の検索フォルダ深度(1〜5) open_cmd: code # `o`で使用するエディタコマンド theme: default # default | serika_dark | dracula | nord | catppuccin | 8008 status_glyphs: unicode # または "ascii" ``` ## 安全性 - manygitは起動フォルダに書き込みを行いません。 - 単体では、強制プッシュ、マージ、リベースを実行しません。`s`はフェッチ+早送り専用プル、`p`は通常のプッシュです。 - 単体で提供する破壊的操作は変更の破棄(`d`/`D`)のみで、常に確認を求めます。 - `!`シェルと`:`AIコマンドは意図的な例外であり、安全対策が施されています。実行前にコマンドを表示し、gitは引数リストで実行(シェルパイプなし)、危険なフラグは拒否されます。 ## リリース(メンテナー向け) バージョンタグをプッシュします(例: `git tag v0.2.0 && git push origin v0.2.0`)。GitHub Actionsがバイナリをビルドしてリリースを公開し、インストーラーと自己更新機能が自動的に取得します。リリースノートはアプリ内の変更ログになります。 ## オンラインで試す TUIの動作するポートが[ランディングページ](https://rabeeh-ta.github.io/manygit/)で公開されています。gitはフェイクですが、キー操作は本物です。