
2026/02/27 2:54
**タイトル:** *Show HN: Deff – ターミナルでのサイドバイサイド Git diff レビュー* **概要** - ターミナル上で直接 Git の差分を確認できるツールです。 - 変更箇所を左右に並べて比較表示します。 - インタラクティブなナビゲーションと即時編集機能をサポート。 **主な特徴** 1. **サイドバイサイド diff ビュー** – 古いコードと新しいコードの視覚的比較が明確に確認できます。 2. **インタラクティブナビゲーション** – ハンク・ファイル・ブランチ間をすばやく移動可能です。 3. **インライン編集サポート** – ターミナルから離れることなく、即座に修正が行えます。 4. **カスタマイズ可能なレイアウト** – 列幅・配色スキームなどを自由に調整できます。 **重要性** - CLI ワークフローを好む開発者のコードレビュー効率を向上させます。 - エディタと diff ツール間でのコンテキストスイッチングを削減します。 - 制限された環境でも大規模な変更セットの可読性が高まります。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
deff は、軽量で Rust ベースのターミナル UI ツールであり、開発者がリッチなナビゲーション機能を備えたサイドバイサイドで Git の差分を確認できるようにします。
主な機能は次のとおりです:ファイル単位のナビゲーション、各ペインごとの独立した水平スクロールオフセット、Vim スタイルの移動(
h/j/k/l、g/G、Ctrl+u/Ctrl+d)、マウスホイールとシフトホイールによるスクロール、差分内検索(/、n/N)、追加・削除行の色付けを伴う構文ハイライト、および .git/deff/reviewed/ に永続化されるファイルごとのレビュー切替。
インストール は GitHub から最新リリースを取得し、Cargo の確認、テンポラリディレクトリへのクローン、deff のインストール、およびクリーンアップを行う単一のワンライナーです(
curl -fsSL https://raw.githubusercontent.com/flamestro/deff/main/install.sh | bash)。ローカルビルドには Rust、git、TTY が必要で、cargo build --release --locked を実行するか、ソースから cargo install --path . でインストールします。
使い方:
– デフォルトの upstream‑ahead 戦略(ローカルブランチとその upstream)で UI を起動します。deff
– カスタムコミット範囲を比較します。deff --strategy range --base origin/main --head HEAD
– コミット前に未追跡/作業ツリーの変更を表示します。deff --include-uncommitted- テーマ制御:
(デフォルトは dark)で、環境変数--theme auto|dark|light
で上書き可能です。DEFF_THEME
プロジェクトは標準的な GitHub の慣行に従っています。コードは GitHub にホストされ、Cargo でビルドされ、CI ワークフロー(
.github/workflows/bump-version.yml)がリリースタグ時に Cargo.toml/Cargo.lock 内のバージョン番号を更新します。貢献ガイドラインは CONTRIBUTING.md に記載されており、コミットメッセージ規約とリリースルールが含まれます。拡張機能の詳細とアーキテクチャは docs/architecture.md で確認できます。
インパクト:ターミナル内で直感的かつ豊富な機能を備えた差分レビュー体験を提供することで、deff は開発者がコードレビューを効率化し、マージコンフリクトを減らし、CI パイプラインや IDE にシームレスに統合できるよう支援します。
本文
deff – Git diff をレビューする Rust 製 TUI アプリ
速習
curl -fsSL https://raw.githubusercontent.com/flamestro/deff/main/install.sh | bash
インストーラのソース: https://github.com/flamestro/deff/blob/main/install.sh
このスクリプトは
cargo があるか確認し、プロジェクトを一時ディレクトリにクローンしてビルド・インストール後、チェックアウトしたディレクトリを削除します。
コミット前にローカルの変更(未追跡ファイルも含む)をレビューしたい場合は:
deff --include-uncommitted
主な機能
- 比較戦略
- upstream‑ahead(デフォルト): ローカルブランチの変更点を上流(
等)と比較。origin/branch - range:
を明示して任意の範囲で比較。--base / --head
- upstream‑ahead(デフォルト): ローカルブランチの変更点を上流(
- 任意で
を付けると、作業ツリーや未追跡ファイルも対象に含めます。--include-uncommitted - 横方向スクロールオフセットが独立した左右ペインを持つサイドバイサイド表示。
- キーボード・マウス操作(ホイール+シフトホイール)対応。
- Vim ライクな移動:
,h/j/k/l
,g/G
/Ctrl+u
。Ctrl+d - 差分内検索:
でクエリ入力 →/
で実行、Enter
で次/前へジャンプ。n/N - ファイル単位のレビュー状態 (
) を切り替えられます。状態はr
にローカル保存。.git/deff/reviewed/ - 言語に応じたシンタックスハイライトと、行レベルでの追加/削除を色付け表示。
例
1 行変更ビュー
(画像プレースホルダー)
複数行変更ビュー
(画像プレースホルダー)
使い方
deff deff --strategy upstream-ahead deff --strategy range --base origin/main --head HEAD deff --strategy range --base origin/main --include-uncommitted deff --theme dark
ヘルプ表示:
deff --help
ローカルビルドと利用フロー
前提条件
- Rust ツールチェーン (
)cargo git- インタラクティブ端末(TTY)
1. ローカルでビルド
cargo build --release --locked ./target/release/deff --help
2. Cargo の bin ディレクトリにインストール(任意)
cargo install --path . deff --help
3. 任意の Git リポジトリ内で実行
cd /path/to/your/repo # デフォルト: ローカルブランチと上流を比較 deff # 明示的に範囲指定 deff --base origin/main --head HEAD # 未コミット + 未追跡ファイルも含める deff --base origin/main --include-uncommitted
上流が設定されていないブランチの場合は
--base を明示して下さい。
テーマ選択
- デフォルト: ダーク系シンタックステーマ(黒/ダーク端末に適合)。
で切替。環境変数--theme auto|dark|light
を上書きします。DEFF_THEME=dark|light
検索とレビューのワークフロー
を押して現在開いているファイル(両ペイン)に対する検索クエリを入力。/
で検索実行し、Enter
でマッチ箇所へジャンプ。n/N
を押すと、現在のファイルのレビュー状態がトグルされます。r- レビュー済み状態は
にローカル保存し、比較スコープ+ファイル内容ハッシュでキー付けします。.git/deff/reviewed/
- レビュー済み状態は
GitHub バージョンアップワークフロー
.github/workflows/bump-version.yml が用意されています。
- トリガー:
のようなタグを持つ GitHub Release を公開。v0.1.0 - デフォルトブランチの
/Cargo.toml
をコミットメッセージに応じて更新します:Cargo.lock
→ 次のマイナーリリース、feat:
→ 次のパッチリリース。chore:/docs:
コントリビューション
ローカルセットアップ、コミットメッセージ規約、リリース/バージョニングルールについては
CONTRIBUTING.md を参照してください。
アーキテクチャと拡張ガイド
モジュールレベルのマップや拡張計画については
docs/architecture.md をご覧ください。