8.2 競合を示す
diff3 は、特別なマーカー行で囲むことで、マージ済み出力の競合を示せます。2つのファイル A と B から生じる競合は、次のように示されます。
<<<<<<< A lines from A ======= lines from B >>>>>>> B
3つのファイル A、B、C から生じる競合は、次のように示されます。
<<<<<<< A lines from A ||||||| B lines from B ======= lines from C >>>>>>> C
--show-all(-A)オプションは -e オプションと同様に動作しますが、競合を囲み、未マージの変更だけでなく older から yours への変更をすべて出力する点が異なります。そのため、入力例ファイル(3つ目の入力例ファイル を参照)に対して「diff3 -A lao tzu tao」を実行すると、tzu だけが異なる競合を囲みます。
<<<<<<< tzu ======= The Way that can be told of is not the eternal Way; The name that can be named is not the eternal name. >>>>>>> tao
また、3方向の競合は次のように出力します。
<<<<<<< lao ||||||| tzu They both may be called deep and profound. Deeper and more profound, The door of all subtleties! ======= -- The Way of Lao-Tzu, tr. Wing-tsit Chan >>>>>>> tao
--show-overlap(-E)オプションは、未マージの変更だけを出力し、2番目のファイルの内容を出力しないため、--show-all(-A)オプションより情報が少なくなります。つまり -E オプションは -e オプションと同様に動作しますが、3方向の重複する変更について1番目と3番目のファイルを囲む点が異なります。同様に、-X は -x と同様に動作しますが、その変更(必ず重複する変更)のすべてを囲みます。たとえば上記の3方向の重複する変更では、-E と -X オプションは次のように出力します。
<<<<<<< lao ======= -- The Way of Lao-Tzu, tr. Wing-tsit Chan >>>>>>> tao
意味のない名前や情報の乏しい名前のファイルを比較する場合、--label=label オプションで「<<<<<<<」「|||||||」「>>>>>>>」の囲み内に別の名前を表示できます。このオプションは、入力ファイルごとに1回、最大3回指定できます。したがって「diff3 -A --label X --label Y --label Z A B C」は「diff3 -A A B C」と同様に動作しますが、出力は「A」「B」「C」ではなく「X」「Y」「Z」という名前のファイルから得たように見えます。