diffnav:1243⭐の Git diff ページャー、ターミナルで GitHub のようなファイルツリー体験
diffnav:1243⭐の Git diff ページャー、ターミナルで GitHub のようなファイルツリー体験
コードレビューは開発フローにおいて極めて重要なプロセスです。GitHub の Web インターフェースでは、左側のファイルツリーを使って簡単にファイル間を移動できますが、ターミナルで git diff の出力を見る場合、長いスクロールの中から目的のファイルを探す必要があります。diffnav はこの問題を解決しようとしています——人気の delta をベースに、1243 stars を獲得した GitHub スタイルのファイルツリー体験をターミナルに提供します。
プロジェクト概要
| 属性 | 内容 |
|---|---|
| GitHub | dlvhdr/diffnav |
| Stars | 1243 |
| 言語 | Go |
| ベース | delta ベース |
| 最終更新 | 2026年4月 |
解決する問題
日常の開発において、私たちは頻繁にターミナルでコードの変更を確認します:
# ワークスペースの変更を確認
git diff
# ステージングエリアの変更を確認
git diff --staged
# 特定のコミットの変更を確認
git show <commit>
しかしこれらのコマンドの出力は線形です——すべてのファイルの変更が順番に並んでいます。複数のファイルに変更が含まれる場合、目的のファイルを見つけるためにスクロールを繰り返す必要があり、効率が悪いです。
delta は diff 出力にシンタックスハイライトとより良いフォーマットを追加する素晴らしいソリューションですが、ファイルナビゲーション機能はまだ欠けています。
diffnav の革新は:delta の優れたレンダリング能力を維持しながら、インタラクティブなファイルツリーサイドバーを追加し、ターミナル内でも GitHub Web インターフェースのように素早くブラウズ・ジャンプできるようにすることです。
主要機能
GitHub スタイルのファイルツリー
左側のファイルツリーにすべての変更ファイルを表示し、以下をサポートします:
- 新規、変更、削除ファイルを異なるアイコンで識別
- ファイル名検索フィルタリング
- キーボードによるクイックナビゲーション(↑↓ 移動、Enter ジャンプ)
- ファイル変更統計(追加/削除行数)
delta ベースの高品質レンダリング
delta のすべての利点を継承:
- 複数のプログラミング言語のシンタックスハイライト
- 行内変更ハイライト(ワードレベルの diff)
- 行番号表示
- ファイルタイトルと区切り線の美化
キーボード優先のインタラクティブ設計
| キー | 機能 |
|---|---|
↑/↓ または k/j | ファイルツリーで上下移動 |
Enter | 選択したファイルにジャンプ |
q | 終了 |
/ | ファイル名検索 |
Esc | 検索キャンセル |
マウス不要、完全にキーボード操作。ターミナルユーザーの使用習慣に合わせています。
インストールと設定
Homebrew(推奨)
brew install dlvhdr/formulae/diffnav
ソースからインストール
git clone https://github.com/dlvhdr/diffnav.git
cd diffnav
go install .
デフォルトの diff ツールとして設定
~/.gitconfig を編集:
[core]
pager = diffnav
または特定のコマンドにのみ適用:
# .bashrc または .zshrc に追加
alias gd="git diff | diffnav"
alias gds="git diff --staged | diffnav"
フォント要件
ファイルツリーのアイコンを正しく表示するには、Nerd Font のインストールが必要です:
# macOS の例
brew tap homebrew/cask-fonts
brew install --cask font-jetbrains-mono-nerd-font
その後、ターミナルの設定でそのフォントを使用するようにしてください。
使用シナリオ
コードレビュー前のセルフチェック
PR を提出する前に、diffnav を使ってすべての変更を素早くブラウズし、デバッグコードや機密情報の漏れがないか確認します:
git diff main...feature-branch | diffnav
他の人のコードレビュー
ターミナルで同僚のコードをレビューする際、ファイルツリーにより重要なファイルへ素早く移動できます:
gh pr checkout 123
git diff main...HEAD | diffnav
履歴コミットの確認
特定のコミットの具体的な変更を確認:
git show <commit-hash> | diffnav
比較:diffnav vs delta vs ネイティブ git diff
| 機能 | ネイティブ git diff | delta | diffnav |
|---|---|---|---|
| シンタックスハイライト | ❌ | ✅ | ✅ |
| 行内変更ハイライト | ❌ | ✅ | ✅ |
| ファイルツリーナビゲーション | ❌ | ❌ | ✅ |
| ファイル名検索 | ❌ | ❌ | ✅ |
| 起動速度 | ⚡ 極速 | ⚡ 速い | ⚡ 速い |
すでに delta を使用している場合、diffnav へのアップグレードは自然な流れです——delta のすべてのレンダリング利点を維持しながら、ナビゲーション機能の欠落を埋めてくれます。
制限と注意事項
- ターミナルサイズへの依存:ファイルツリーは適切に表示するために十分なターミナル幅が必要です。フルスクリーンでの使用を推奨します
- Nerd Font が必須:Nerd Font をインストールしないと、アイコンが四角で表示されます
- 比較的新しいプロジェクト:1243 stars は成長段階にあることを示しており、機能は比較的専門的で、一部の成熟したツールほど包括的ではありません
- Go エコシステム:Go 環境に慣れていない場合、ソースからのインストールには追加の設定が必要な場合があります
まとめ
diffnav は小さく精巧な開発者ツールです。delta のレンダリングロジックを書き換えようとはせず、その上に本当に欠けていた機能——ファイルツリーナビゲーション——を追加しました。この設計選択は非常に賢明です:巨人の肩の上に立ち、特定の問題を解決するのです。
ターミナルで頻繁にコードレビューを行う開発者にとって、diffnav は効率を大幅に向上させることができます。1243 stars の背後にあるのは明確な製品ポジショニングです:ターミナル内の diff 体験を GitHub Web インターフェースに近づける。
delta ユーザーの方は、ぜひ diffnav を試してみてください。あなたの git ツールチェーンの新しい常連メンバーになるかもしれません。
| 属性 | 内容 |
|---|---|
| リポジトリ | https://github.com/dlvhdr/diffnav |
| ライセンス | MIT |
| 言語 | Go |
| メンテナー | @dlvhdr |