1.1 差分のまとまり(hunk)
2つのファイルを比較するとき、diffは両方に共通する行の連なりを見つけます。その間には、hunkと呼ばれる異なる行のまとまりが挟まれます。2つの同一ファイルを比較すると、異なる行がないため、共通する行の連なりが1つ見つかり、hunkはありません。完全に異なる2つのファイルを比較すると、共通する行はなく、両方のファイルの全行を含む大きなhunkが1つできます。一般に、与えられた2つのファイルの行を対応付ける方法は複数あります。diffは、異なる行の小さなhunkに挟まれた、共通する行の大きな連なりを見つけることで、hunkの総量を最小にしようとします。
たとえば、ファイルFに「a」「b」「c」の3行があり、ファイルGには同じ3行が逆順の「c」「b」「a」で並んでいるとします。diffが「c」の行を共通と判断すると、コマンド「diff F G」は次の出力を生成します。
1,2d0 < a < b 3a2,3 > b > a
一方、diffが代わりに「b」の行を共通と判断すると、次の出力になります。
1c1 < a --- > c 3c3 < c --- > a
「a」を共通の行と判断することもできます。diffは、常にファイル間の最適な対応付けを見つけるとは限りません。実行を速くするために簡略化することがあるからです。ただし、通常、その出力は最短の出力に近いものになります。--minimal(-d)オプションでこの兼ね合いを調整できます(diffの性能上のトレードオフを参照)。