trasta298/keifu has 816 GitHub stars and 27 forks. GitHot measured +3 in 7 days and +5 in 15 days. Last checked 2026-11-10 23:04 UTC. Last push 2026-10-12.
Git genealogy, untangled. A TUI for navigating commit graphs with color and clarity.
計測したスター増加
- 24時間
- 更新が遅れています
- 7日間
- +3
- 15日間
- +5
- 1か月
- 更新が遅れています
期間ごとの純増数です。期間は重複しており、日別の値ではありません。未計測の値は空欄です。スター数は注目度の指標であり、品質の保証ではありません。
docs/README_JA.md
オリジナル🧬 keifu
ブランチの流れを見渡し、変更を確認。そのままターミナルで作業を進める。
keifu(系譜, /keːɸɯ/)は、複数のブランチを行き来するための Git TUI です。 色分けされたコミットグラフで履歴をたどり、差分の確認からステージング・コミット・プッシュまで、 キーボードでもマウスでも操作できます。

- ブランチの流れが見える — 分岐とマージをグラフで確認。ローカルブランチ、リモート、タグをまとめて表示します。
- 変更を詳しく読める — シンタックスハイライトと行内の変更強調付きでファイル差分を確認できます。
- 次の作業へ進める — ブランチの検索・切り替えから、ファイルのステージング、コミット、origin へのプッシュまで。
- 作業環境に収まる — ショートカット、クリック、ペインごとのスクロールに対応。狭いターミナル分割でも使え、画像プロトコルは不要です。
以下で紹介するペインを残す差分表示とドラッグでのコピーは、 v0.7.0 以降で利用できます。
インストール
crates.io から
cargo install keifu
mise を使う
mise use -g github:trasta298/keifu@latest
Homebrew を使う
brew install trasta298/tap/keifu
ソースから
git clone https://github.com/trasta298/keifu
cd keifu
cargo install --path .
はじめに
Git リポジトリ内(サブディレクトリも可)で起動します。
keifu
↑/↓、j/k、またはクリックでコミットを選びます。Spaceで変更ファイルの選択に進み、Enterで差分を開きます。Escで戻ります。/でブランチ検索、?でヘルプを開けます。
Unicode とカラー表示に対応したターミナルが必要です。fetch / push には PATH 上の git、
Cargo でのインストールやソースビルドには Rust ツールチェーンが必要です。
画面で見る使い方
コミットの情報と一緒に差分を読む
追加・削除された行に加え、シンタックスハイライトと行内の変更強調で差分を確認できます。
n / N でファイル間、] / [ でハンク間を移動します。

差分はデフォルトでは全画面で開きます。上の画像のようにコミット詳細とファイル一覧を残すには:
keifu --file-view replace
ファイルを選んでコミットする
uncommitted changes を選んで Space を押し、s でファイルごとにステージ/解除します。
a で全ファイルをステージ、u で全解除。c でコミットメッセージを入力でき、
グラフに戻って p を押すと現在のブランチを origin にプッシュします。

ステージングはファイル単位です。コミットにはステージ済みの変更だけが含まれます。
作業したいブランチを探す
/ を押してブランチ名の一部を入力すると、ファジー検索で候補が絞られます。
Enter で選んだブランチの位置にジャンプし、グラフ上でもう一度 Enter を押すと checkout できます。

エディタの隣にも置ける
ターミナルの幅が狭くなると詳細ペインが縦に並び、一部のコミット情報を省略して、 グラフとメッセージの表示スペースを確保します。

マウスでも操作できる
コミットやファイルをクリックして選択し、ダブルクリックでファイル一覧や差分を開けます。 ポインタのあるペインをホイールでスクロールでき、ステータスバーの操作ヒントもクリック可能です。 ペイン内の表示中のテキストをドラッグして離すと、OSC 52 経由でコピーします (ターミナル側のクリップボード対応が必要です)。
設定
~/.config/keifu/config.toml で初期設定を変更できます。
[ui]
file_view = "replace"
デフォルトでは10秒ごとにローカルの状態を更新し、60秒ごとに origin から fetch します。 自動更新の調整・無効化や、リモート・タグの表示設定は設定ガイドを参照してください。
キーバインド
アプリ内では ? でヘルプを表示できます。
キーボード・マウス操作の一覧
ナビゲーション
| キー | 操作 |
|---|---|
j / ↓ |
下へ移動(詳細ペインフォーカス時はスクロール) |
k / ↑ |
上へ移動(詳細ペインフォーカス時はスクロール) |
Tab |
ペインフォーカス切り替え(グラフ / コミット詳細) |
] |
ブランチラベルのある次のコミットへジャンプ |
[ |
ブランチラベルのある前のコミットへジャンプ |
h / ← |
左のブランチを選択(同一コミット内) |
l / → |
右のブランチを選択(同一コミット内) |
Ctrl+d |
ページ下へ移動 |
Ctrl+u |
ページ上へ移動 |
g / Home |
先頭へ移動 |
G / End |
末尾へ移動 |
@ |
HEAD(現在のブランチ)へジャンプ |
Space |
変更ファイル一覧を開く |
Git 操作
| キー | 操作 |
|---|---|
Enter |
選択中のブランチ/コミットを checkout |
b |
選択中コミットからブランチを作成 |
d |
ブランチ削除(ローカル/非 HEAD のみ) |
f |
origin から fetch |
c |
ステージ済みの変更をコミット(メッセージ入力ダイアログ) |
p |
現在のブランチを origin へ push |
ファイル一覧(Space)/ ステージング
ステージング操作は「uncommitted changes」行を選択中のみ有効です。
| キー | 操作 |
|---|---|
j / k |
ファイルを選択 |
Enter |
ファイル差分を開く |
s |
選択ファイルを stage / unstage |
a |
全ての変更を stage |
u |
全ての変更を unstage |
c |
ステージ済みの変更をコミット |
Esc / q |
戻る |
マウス
| 入力 | 操作 |
|---|---|
| コミット行をクリック | コミットを選択(ダブルクリックでファイル一覧を開く) |
| ファイル行をクリック | ファイルを選択(ダブルクリックで差分を開く) |
| ペインをクリック | ペインにフォーカス |
| ステータスバーのヒントをクリック | その操作を実行 |
| ホイールスクロール | カーソル下のペインをスクロール |
| 左ドラッグ | ペイン内の表示中のテキストを選択し、離すとコピー(OSC 52) |
クリックとダブルクリックはボタンを離したときに実行され、ドラッグでは発動しません。
選択できるのは表示中のテキストだけで、スクロールや画面の切り替えで選択は解除されます。
ターミナル標準のテキスト選択には修飾キーを使ってください
(多くのターミナルで Shift + ドラッグ、iTerm2 は Fn + ドラッグ)。
注意: Ghostty は現状、mouse-mode のアプリに対してホイール 1 ノッチを複数のスクロールイベントに増幅して送るため(ghostty#3955)、1 ノッチで数行余分にスクロールすることがあります。Ghostty 設定の mouse-scroll-multiplier を下げると回避できます。
検索
| キー | 操作 |
|---|---|
/ |
ブランチを検索(インクリメンタル・ファジー検索) |
↑ / Ctrl+k |
前の検索結果を選択 |
↓ / Ctrl+j |
次の検索結果を選択 |
Enter |
選択したブランチへジャンプ |
Esc / 空欄で Backspace |
検索をキャンセル |
ファイル差分ビュー
| キー | 操作 |
|---|---|
j / k / ↑ / ↓ |
上下スクロール |
h / l / ← / → |
左右スクロール |
Ctrl+d / Ctrl+u |
半ページ下/上 |
Ctrl+f / Ctrl+b |
1ページ下/上 |
g / G |
先頭/末尾へ移動 |
0 |
行の先頭にスクロール |
] / [ |
次/前のハンクへジャンプ |
n / N |
次/前のファイルへジャンプ |
Esc / q |
ファイル選択に戻る / 閉じる |
その他
| キー | 操作 |
|---|---|
y |
コミットハッシュをクリップボードへコピー(OSC 52) |
Y |
ブランチ名をクリップボードへコピー(OSC 52) |
R |
リポジトリ情報を更新 |
o |
リモートブランチ表示を切り替え |
t |
タグ表示を切り替え |
? |
ヘルプ表示切り替え |
q / Esc |
終了(詳細ペインフォーカス時はまずグラフへフォーカスを戻す) |
注意点と制限
- TUI は表示対象のブランチから最大 500 件を表示します。
- マージコミットの差分は最初の親との比較、初期コミットは空ツリーとの差分です。
- 変更ファイル一覧は 50 件までです。バイナリファイルは行数集計なしで表示されます。
- ステージ済み・未ステージ・未追跡の変更がある場合、先頭に「uncommitted changes」行が表示されます。
- 同一コミットに複数ブランチがある場合、ラベルは1つに集約され、他のブランチラベルの数が
+Nで表示されます(例:[main ↔ origin, origin_2, origin_3 +1])。同名で同一コミットを指すローカルブランチとすべてのリモートブランチは1つのラベルとして数えられます。一致するリモート名は↔の後にアルファベット順で表示され、集約ラベルとブランチポップアップの両方で保持されます(未選択のブランチも対象)。別のコミットを指すリモートブランチや、対応するローカルブランチがないものは個別に表示されます。h/lまたは←/→でラベルを切り替え可能です。 - 長いブランチ名やリモート一覧は表示幅に合わせて省略されます。完全な参照名はコミット詳細で確認できます。
origin/xxxを checkout すると、ローカルブランチを作成または更新します。上流の設定は新規作成時のみ行われます。ローカルブランチが別コミットを指している場合は、リモートに合わせて強制的に更新されます。- リモートブランチはデフォルトで表示されます。
oで非表示にすると、リモートブランチからのみ到達可能なコミットもグラフから除外されます。 - タグはデフォルトで表示されます。
tで非表示にできます。 - 削除操作はローカルブランチのみ対応です。
- fetch / push には
originリモートの設定が必要です。ステージングはファイル単位のみ(hunk 単位は未対応)で、コミットにはgit commitと同様にステージ済みの変更だけが含まれます。
開発
ログ出力とリモート制御によるデバッグは debugging.md、 デモ用リポジトリとスクリーンショットの再作成は screenshots/README.md を参照してください。
ライセンス
MIT