このプロジェクトについて
# 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はフェイクですが、キー操作は本物です。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.