bmap は Git のブランチ/マージ履歴を素早く俯瞰するためのターミナル UI ツールです。代替スクリーンを使った全画面表示、検索、親子ジャンプ、アクティブ行の追従スクロールなどを備えています。
- 全画面 TUI(代替スクリーン)で起動・終了時に原状復帰
- アクティブ行の追従スクロール(行が下に隠れない)
- グラフ表示の切替(縦のガイド線を表示/非表示、最小は行頭に色付きの
●のみ) - 検索(
/で入力、n/Nで次/前へ) - 親/子コミットへのジャンプ(
←/→) - ステールブランチの簡易ハイライト(
oで 30/90/180 日をトグル) - マウスホイールで選択移動(ターミナルのスクロールバックは動かさない方針)
- フィルタ(
--since,--author,--branch,--limitなど)
- 前提: Rust (stable) と Cargo が必要です。
- ビルド:
cargo build --release - 実行ファイル:
target/release/bmap
bmap [OPTIONS]
主なオプション:
--repo <PATH>リポジトリのパス(省略時はカレント)--since <WHEN>例:2024-01-01,90d,3 months ago--author <GLOB>例:"Alice*"--branch <GLOB>例:"feat/*"--stale-days <N>ステール閾値(日)デフォルト: 90--limit <N>最大コミット数(デフォルト: 5000)--compactコンパクト表示--no-graph縦のガイド線を非表示(行頭に●のみ)--purge-scrollback起動時にスクロールバックをパージ
例:
- 直近 90 日のみ:
bmap --since 90d - 著者とブランチで絞込:
bmap --author "Alice*" --branch "feat/*" - 縦線なし・スクロールバック抑止重視:
bmap --no-graph --purge-scrollback
- 基本移動:
↑/↓、j/k - ページ移動:
PageUp/PageDown、半ページ:Ctrl+u/Ctrl+d - 先頭/末尾:
Home/End - 親/子ジャンプ:
←/→ - 検索:
/で入力、n/N次/前 - ステール閾値トグル:
o - グラフ表示トグル:
g - 終了:
q
全画面固定(代替スクリーン)中に「上スクロールで実行前の出力が見える」場合は、ターミナルや tmux の設定が影響しています。
- iTerm2: Profiles → Terminal → “Scrollback in Alternate Screen” をオフ
- tmux を使用している場合:
set -g mouse onbind -n WheelUpPane if-shell -F "#{alternate_on}" "send-keys -M" "copy-mode -e"bind -n WheelDownPane if-shell -F "#{alternate_on}" "send-keys -M" "send-keys -M"
- それでも見えてしまう環境では
--purge-scrollbackの併用を検討してください
- オプション
--no-graphや--purge-scrollbackがヘルプに出ない → 古いbmapを実行している可能性があります。cargo run -- --helpで確認してください。 - 行が下に隠れる → 最新バイナリで再実行してください。選択移動のたびにビューが追従するよう実装されています。
- 依存:
ratatui,crossterm,git2,chrono,clap - デバッグ実行:
cargo run -- [OPTIONS] - 高速ビルド(配布用):
cargo build --release