diffnav:1243⭐の Git diff ページャー、ターミナルで GitHub のようなファイルツリー体験

コードレビューは開発フローにおいて極めて重要なプロセスです。GitHub の Web インターフェースでは、左側のファイルツリーを使って簡単にファイル間を移動できますが、ターミナルで git diff の出力を見る場合、長いスクロールの中から目的のファイルを探す必要があります。diffnav はこの問題を解決しようとしています——人気の delta をベースに、1243 stars を獲得した GitHub スタイルのファイルツリー体験をターミナルに提供します。

プロジェクト概要

属性内容
GitHubdlvhdr/diffnav
Stars1243
言語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 diffdeltadiffnav
シンタックスハイライト
行内変更ハイライト
ファイルツリーナビゲーション
ファイル名検索
起動速度⚡ 極速⚡ 速い⚡ 速い

すでに 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