# gitstack
[](https://crates.io/crates/gitstack)
[](LICENSE)
> **分析とインサイトに特化したGit履歴ビューア**
## なぜ 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つで即座にインサイトを取得:
| `A` | 著者統計 | 著者ごとのコミット数、追加/削除行数 |
| `H` | ヒートマップ | 最も頻繁に変更されるファイル |
| `T` | タイムライン | 時間帯/曜日別のコミット活動 |
| `O` | オーナーシップ | ファイル/ディレクトリごとのコード所有者 |
| `t` | トポロジー | ブランチ健全性と放置ブランチ検出 |
### スマートフィルター
直感的な構文による強力なフィルタリング:
```
/author:john # 著者でフィルター
/since:7days # 最近のコミット
/until:2024-01-01 # 指定日以前
/message:fix # コミットメッセージ検索
/file:src/main.rs # 特定ファイルに関するコミット
/hash:abc123..def456 # コミット範囲
```
フィルターの組み合わせ: `/author:john since:1week file:*.rs`
### 2ペインレイアウト
`v`で切り替えて、グラフと詳細を並べて表示:
```
┌─ グラフ ────────────────┬─ 詳細 ─────────────────────────┐
│ ● abc123 feat: 認証追加 │ Author: John Doe │
│ │ │ Date: 2024-01-15 10:30 │
│ ○ def456 fix: バグ修正 │ │
│ │ │ feat: 認証機能を追加 │
│ ◆ ghi789 Merge │ │
│ │ │ - ログインエンドポイント追加 │
│ ○ jkl012 init │ - JWT検証を追加 │
└─────────────────────────┴────────────────────────────────┘
```
### ブランチグラフ
スマートな色割り当てによるカラーコード付きブランチ可視化:
- 隣接レーンは同じ色にならない
- 同じ分岐元からのブランチは異なる色を取得
- 適切な線接続によるクリアなマージ可視化
## 比較
| 著者統計 | ✅ | ❌ | ❌ | ❌ |
| ファイルヒートマップ | ✅ | ❌ | ❌ | ❌ |
| コードオーナーシップ | ✅ | ❌ | ❌ | ❌ |
| ブランチ健全性/トポロジー | ✅ | ❌ | ❌ | ❌ |
| スマートフィルター構文 | ✅ | ❌ | ❌ | ❌ |
| 2ペインレイアウト | ✅ | ❌ | ✅ | ❌ |
| コミット範囲フィルター | ✅ | ❌ | ❌ | ❌ |
| ブランチグラフ | ✅ | ✅ | ✅ | ✅ |
| ステージング/コミット | ✅ | ❌ | ✅ | ✅ |
| インタラクティブリベース | ❌ | ❌ | ✅ | ❌ |
## キーバインド
### ナビゲーション
| `j` / `↓` | 下へ移動 |
| `k` / `↑` | 上へ移動 |
| `g` | 先頭へ |
| `G` | 末尾へ |
| `Ctrl+d` | ページダウン |
| `Ctrl+u` | ページアップ |
### ビュー
| `Enter` | コミット詳細/diff表示 |
| `P` | ファイルパッチ表示(詳細ビュー内) |
| `v` | 2ペインレイアウト切替 |
| `A` | 著者統計 |
| `H` | ファイルヒートマップ |
| `T` | コミットタイムライン |
| `O` | コードオーナーシップ |
| `t` | ブランチトポロジー |
### アクション
| `/` | フィルターを開く |
| `Esc` | フィルターをクリア/ビューを閉じる |
| `y` | コミットハッシュをコピー |
| `b` | Blameビューを表示 |
| `s` | ステータスビューを開く |
| `F` | リモートからフェッチ |
| `?` | ヘルプを表示 |
| `q` | 終了 |
## 設定
設定ファイル: `~/.config/gitstack/config.toml`
```toml
[display]
date_format = "relative" # または "absolute"
show_stats = true
[keybindings]
quit = "q"
help = "?"
```
## ライセンス
MIT
---
[English](README.md) · [設計書](docs/DESIGN.md)