# keifu

[English README](README.md)

keifu (系譜, /keːɸɯ/) は、ターミナル上で Git のコミットグラフを可視化する TUI ツールです。カラー付きのグラフ、コミット詳細、変更ファイルの要約を表示し、基本的なブランチ操作も行えます。

## 特長

- ブランチごとに色分けされた Unicode グラフ表示
- ブランチラベル、日付、著者、短いハッシュ、メッセージを表示
- コミット詳細パネル（フルメッセージと変更ファイルの統計）
- Git 操作: checkout、ブランチ作成/削除、merge、rebase

## 動作要件

- Git リポジトリ内で実行してください（カレントディレクトリから自動検出します）
- Unicode の罫線文字とカラー表示に対応したターミナル
- Rust ツールチェーン（ソースからビルドする場合）

## インストール

### crates.io から

```bash
cargo install keifu
```

### ソースから

```bash
cargo install --path .
```

または:

```bash
cargo build --release
./target/release/keifu
```

## 使い方

Git リポジトリ内で実行します:

```bash
keifu
```

## キーバインド

### ナビゲーション

| キー | 操作 |
| --- | --- |
| `j` / `↓` | 下へ移動 |
| `k` / `↑` | 上へ移動 |
| `]` / `Tab` | ブランチラベルのある次のコミットへジャンプ |
| `[` / `Shift+Tab` | ブランチラベルのある前のコミットへジャンプ |
| `Ctrl+d` | ページ下へ移動 |
| `Ctrl+u` | ページ上へ移動 |
| `g` / `Home` | 先頭へ移動 |
| `G` / `End` | 末尾へ移動 |

### Git 操作

| キー | 操作 |
| --- | --- |
| `Enter` | 選択中のブランチ/コミットを checkout |
| `b` | 選択中コミットからブランチを作成 |
| `d` | ブランチ削除（ローカル/非 HEAD のみ） |
| `m` | 選択ブランチを現在のブランチへ merge |
| `r` | 現在のブランチを選択ブランチへ rebase |

### その他

| キー | 操作 |
| --- | --- |
| `R` | リポジトリ情報を更新 |
| `?` | ヘルプ表示切り替え |
| `q` / `Esc` | 終了 |

## 注意点と制限

- TUI は全ブランチから最大 500 件を表示します。
- マージコミットの差分は最初の親との比較、初期コミットは空ツリーとの差分です。
- 変更ファイル一覧は 50 件までで、バイナリファイルは対象外です。
- `origin/xxx` を checkout すると、ローカルブランチを作成または更新し、上流を設定します。ローカルブランチが別コミットを指している場合は、リモートに合わせて強制的に更新されます。
- merge/rebase はコンフリクトで失敗することがあります。必要に応じて手動で解決し、画面を更新してください。
- リモートブランチは表示されますが、merge/rebase/delete はローカルブランチのみ対応です。

## ライセンス

MIT
