# gitstack
[](https://crates.io/crates/gitstack)
[](LICENSE)
> **分析とインサイトに特化したGit履歴ビューア**
>
> *AI支援開発時代に最適化 - Claude Codeなどとの併用に対応*
リリース履歴: `HISTORY.md` を参照。
リリース履歴をGitタグから再生成:
```bash
make history
```
## なぜ gitstack?
| lazygit | Git操作 | ステージング、リベース、チェリーピック |
| tig | ログ閲覧 | コミットの素早い確認 |
| keifu | グラフ可視化 | 美しいブランチ表示 |
| **gitstack** | **分析 & インサイト** | **コードベースの理解** |
gitstackはこんな疑問に答えます:
- *「このモジュールは誰が作業してきた?」*
- *「どのファイルが頻繁に変更されている?」*
- *「どのコミットが最も影響力があった?」*
- *「放置されているブランチはある?」*
- *「このプロジェクトは全体的に健全?」*
## インストール
```bash
cargo install gitstack
```
ソースからビルド:
```bash
git clone https://github.com/Hiro-Chiba/gitstack
cd gitstack
cargo install --path .
```
## クイックスタート
1. **インストール**: `cargo install gitstack`
2. **起動**: `gitstack`(任意のGitリポジトリ内で実行)
3. **基本操作**: `1`-`5`でパネル切替、`Tab`でフォーカス切替、`?`でヘルプ、`.`でクイックアクション、`q`で終了
## 機能
### 分析スイート
キー1つで即座にインサイトを取得:
| `A` | 著者統計 | 著者ごとのコミット数、追加/削除行数 |
| `H` | ヒートマップ | 最も頻繁に変更されるファイル |
| `. → T` | タイムライン | 時間帯/曜日別のコミット活動 |
| `. → O` | オーナーシップ | ファイル/ディレクトリごとのコード所有者 |
| `. → I` | Impact Score | コミット影響度スコア(0.0-1.0) |
| `t` | トポロジー | ブランチ健全性と推奨アクション |
| `D` | ヘルスダッシュボード | プロジェクト健全性スコア(0-100) |
### スマートフィルター
直感的な構文による強力なフィルタリング:
```
/author:john # 著者でフィルター
/since:7days # 最近のコミット
/until:2024-01-01 # 指定日以前
/message:fix # コミットメッセージ検索
/file:src/main.rs # 特定ファイルに関するコミット
/hash:abc123..def456 # コミット範囲
```
フィルターの組み合わせ: `/author:john since:1week file:*.rs`
### Dashboardレイアウト
サイドバーとコンテキストに応じたメインパネルによる統一的なDashboardレイアウト:
```
┌──────────────────┬────────────────────────────────────────┐
│ 1 Status │ │
│ repo: gitstack │ │
│ branch: main ↑2 │ │
├──────────────────┤ │
│ 2 Commits │ Main Panel │
│ ● abc123 feat.. │ (context-sensitive view) │
│ ● def456 fix.. │ │
│ ◆ ghi789 merge │ Commits → diff/detail │
│ ○ jkl012 chore │ Branches → compare/topology │
├──────────────────┤ Files → patch/diff │
│ 3 Branches │ Stash → stash diff │
│ ● main │ Status → health dashboard │
│ feat/auth │ │
│ fix/bug-123 │ │
├──────────────────┤ │
│ 4 Files │ │
│ M src/main.rs │ │
│ A src/new.rs │ │
├──────────────────┤ │
│ 5 Stash │ │
│ stash@{0}: WIP │ │
└──────────────────┴────────────────────────────────────────┘
j/k:move Enter:detail 1-5:panel Tab:focus h/l:side/main ?:help q:quit
```
サイドバーには5つのパネル(Status, Commits, Branches, Files, Stash)があります。`1`-`5`で切替、メインパネルはアクティブなサイドバーパネルに応じて自動更新されます。`Tab`でサイドバーとメインパネルのフォーカスを切替、または`h`/`l`でフォーカス方向を変更できます。
Commitsメインパネルにフォーカス(`l`または`Tab`)すると、`j`/`k`で変更ファイルをナビゲート、`Enter`/`Space`でファイルdiffの展開/折りたたみ、`e`/`E`で全diffの一括展開/折りたたみが可能です。
### ブランチグラフ
スマートな色割り当てによるカラーコード付きブランチ可視化:
- 隣接レーンは同じ色にならない
- 同じ分岐元からのブランチは異なる色を取得
- 適切な線接続によるクリアなマージ可視化
### プロジェクトヘルスダッシュボード
`D`を押してプロジェクト健全性を表示:
```
┌─ ヘルスダッシュボード ─────────────────────────────┐
│ 総合スコア: 78 / 100 (Good) │
│ ████████░░ │
│ │
│ 品質 ████████░░ 82% │
│ テスト健全性 ██████░░░░ 65% │
│ バスファクター █████████░ 90% │
│ 技術的負債 ███████░░░ 75% │
│ │
│ ⚠ Warning: 放置ブランチが3件あります │
│ ℹ Info: テストカバレッジを改善できます │
└────────────────────────────────────────────────────┘
```
### ブランチ推奨
トポロジービュー(`t`)で各ブランチの推奨アクションを表示:
| 🗑 | Delete | マージ済み or 60日以上放置 |
| ↻ | Rebase | mainから大幅に遅れている |
| ⤵ | Merge | マージ可能(ahead > 0) |
| 👁 | Review | 長寿命ブランチ、要確認 |
### CLIモード(非対話)
AIコーディングアシスタントやスクリプトから利用可能なJSON出力:
```bash
gitstack --stats # 著者統計
gitstack --heatmap # ファイル変更頻度
gitstack --impact # コミット影響度スコア
gitstack --health # プロジェクト健全性スコア
gitstack --pack # AI向けインサイトパック
gitstack --review-pack # AIレビュー判断パック
```
> 全オプションと例: [docs/CLI.ja.md](docs/CLI.ja.md)
### AI Terminal Cockpit (v5.0)
v5.0では、AIが生成した変更の理解・管理を支援する機能を追加:
- **ウォッチモード** (`W`): ファイル変更のリアルタイム検知(500ms間隔)
- **変更意図アイコン**: コミット意図の自動分類(✦Feature/✧Fix/↻Refactor/◇Docs/◈Test/○Chore)
- **AIセッション可視化**: Co-authorパターンからAIセッションを検出し、セッション区切り線を表示
- **ステージリスクスコアリング**: ファイル数・ヒートマップ・所有権・変更行数からリスクバッジを表示
- **スマートステージング** (`S` ステータスビュー内): ディレクトリ・テスト/実装ペアでのグループ提案
- **ワンキーPR作成** (`P`): `gh` CLI連携による自動ボディ生成付きPR作成
- **レビューキュー** (`R`): MCP経由のレビューリクエストをapprove/rejectで管理
- **PR分割提案**: 10+ファイルステージ時に独立クラスタを検出し分割を提案
- **MCP書き込みツール**: 8つのGit書き込み操作(`dry_run`安全機構付き、デフォルトtrue)
### MCPサーバー
gitstackはClaude CodeなどのAIアシスタント向けMCP(Model Context Protocol)サーバーを同梱しています。リソースとツールの詳細は [docs/MCP.ja.md](docs/MCP.ja.md) を参照してください。
## 比較
| 著者統計 | ✅ | ❌ | ❌ | ❌ |
| ファイルヒートマップ | ✅ | ❌ | ❌ | ❌ |
| コードオーナーシップ | ✅ | ❌ | ❌ | ❌ |
| Impact Score | ✅ | ❌ | ❌ | ❌ |
| **ヘルスダッシュボード** | ✅ | ❌ | ❌ | ❌ |
| **AIセッション追跡** | ✅ | ❌ | ❌ | ❌ |
| **変更意図アイコン** | ✅ | ❌ | ❌ | ❌ |
| **ステージリスクスコア** | ✅ | ❌ | ❌ | ❌ |
| ブランチ健全性/推奨 | ✅ | ❌ | ❌ | ❌ |
| スマートフィルター構文 | ✅ | ❌ | ❌ | ❌ |
| Dashboardレイアウト | ✅ | ❌ | ❌ | ❌ |
| コミット範囲フィルター | ✅ | ❌ | ❌ | ❌ |
| ブランチグラフ | ✅ | ✅ | ✅ | ✅ |
| ステージング/コミット | ✅ | ❌ | ✅ | ✅ |
| Pull/Push | ✅ | ✅ | ✅ | ✅ |
| ブランチ作成/削除 | ✅ | ✅ | ✅ | ✅ |
| インタラクティブリベース | ❌ | ❌ | ✅ | ❌ |
| CLI/JSON出力 | ✅ | ❌ | ❌ | ❌ |
| MCPサーバー | ✅ | ❌ | ❌ | ❌ |
## キーバインド
### ナビゲーション
| `j` / `k` | 下へ / 上へ移動 |
| `g` / `G` | 先頭 / 末尾へ |
| `Ctrl+d` / `Ctrl+u` | ページダウン / アップ |
### Dashboard
| `1`-`5` | サイドバーパネル切替 |
| `Tab` | サイドバー/メインのフォーカス切替 |
| `h` / `l` | サイドバー / メインパネルにフォーカス |
### ビュー
| `A` | 著者統計 |
| `H` | ファイルヒートマップ |
| `t` | ブランチトポロジー |
| `D` | ヘルスダッシュボード |
| `.` | クイックアクションメニュー |
### アクション
| `/` | フィルターを開く |
| `Enter` | 詳細表示 / diff展開 |
| `y` | コミットハッシュをコピー |
| `b` | ブランチ選択 |
| `s` | ステータスビュー |
| `W` | ウォッチモード |
| `P` | PR作成 |
| `R` | レビューキュー |
| `?` | ヘルプ |
| `q` | 終了 |
> 全キーバインド一覧: [docs/KEYBINDINGS.ja.md](docs/KEYBINDINGS.ja.md)
## 設定
設定ファイル: `~/.config/gitstack/config.toml`
```toml
[metrics]
quick_action_usage = true # ローカルのクイックアクション使用追跡を有効化(デフォルト: false)
```
## ライセンス
MIT
---
[English](README.md) · [設計書](docs/DESIGN.md)