Repolode
Wilfred

Wilfred/difftastic

行単位ではなく構文木でファイルを比較し、整形やコードの移動も正確に表示するコマンドラインdiffツール。

スター
26,159
フォーク
534
未解決の Issue
282
最終コミット
3 日前

これは何?

Difftasticは、2つのファイルを行ごとではなく構文に基づいて比較する構造的なdiffツールです。両方のファイルをパースし、コードが整形されたり複数行に分割されたりしていても、実際に変更された構文要素だけを強調表示します。

空白は、その言語で意味を持つ場合にのみ差分として扱うため、インデントだけの変更もそのように認識されます。認識できないファイル形式の場合は、単語を強調表示する行単位のdiffにフォールバックします。出力は、人が読みやすいように設計された左右並列表示で、パッチの生成には向いていません。

Difftasticはgitやその他のバージョン管理システムと連携でき、競合する両側をdiffすることでマージコンフリクトマーカーを解決できます。また、構文に変更があったかどうかに応じた終了ステータスを返す、チェック専用モードも備えています。

主な機能

  • 01構文木でコードを比較するため、整形によるノイズの多いdiffを防ぎます。
  • 0230以上のプログラミング言語に対応しています。
  • 03構文上意味を持つ場合にのみ、空白の変更を強調表示します。
  • 04gitやその他のバージョン管理システムと連携できます。
  • 05競合する両側を比較して、マージコンフリクトマーカーをdiffします。
  • 06完全なdiffを表示せずに構文上の変更を検出できる、チェック専用モードを備えています。

ユースケース

  • コードが整形または再構成されたコミットのレビュー。
  • Rust、JavaScript、HTMLなどの大規模なリファクタリングのdiffを読む。
  • CIで、ファイルの2つのバージョンに構文上の違いがあるかを確認する。
  • 変更点をより明確に把握できる左右並列表示で、マージコンフリクトを調べる。

クイックスタート

  1. 1

    マニュアルのインストールガイドに従って difftastic をインストールします

  2. 2

    difft で2つのファイルを比較します

    difft foo1.c foo2.c

使う前に知っておきたいこと

  • 変更箇所の多いファイルではパフォーマンスが低下し、大量のメモリを使用することがあります。
  • 常に順序を重視するため、集合の要素やソートされていないキーなど、順序を入れ替えた項目も変更として表示されます。
  • マージや、後から適用できるパッチの生成には対応していません。

収録されている特集

トピック

よくある質問

difftastic とは?
行単位ではなく構文木でファイルを比較し、整形やコードの移動も正確に表示するコマンドラインdiffツール。 Difftasticは、2つのファイルを行ごとではなく構文に基づいて比較する構造的なdiffツールです。両方のファイルをパースし、コードが整形されたり複数行に分割されたりしていても、実際に変更された構文要素だけを強調表示します。
difftastic は無料で使えますか?ライセンスは?
difftastic は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
difftastic は今もメンテナンスされていますか?
活発にメンテナンス中。difftastic の最終コミットは 2026年11月4日 です。
difftastic は何に使えますか?
コードが整形または再構成されたコミットのレビュー。 Rust、JavaScript、HTMLなどの大規模なリファクタリングのdiffを読む。 CIで、ファイルの2つのバージョンに構文上の違いがあるかを確認する。 変更点をより明確に把握できる左右並列表示で、マージコンフリクトを調べる。
difftastic のインストール方法は?
マニュアルのインストールガイドに従って difftastic をインストールします difft で2つのファイルを比較します: difft foo1.c foo2.c
difftastic はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Wilfred/difftastic

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト