Node:Marking Conflicts, Next:Bypassing ed, Previous:Which Changes, Up:diff3 Merging
diff3
can mark conflicts in the merged output by
bracketing them with special marker lines. A conflict
that comes from two files A and B is marked as follows:
<<<<<<< A lines from A ======= lines from B >>>>>>> B
A conflict that comes from three files A, B and C is
marked as follows:
<<<<<<< A lines from A ||||||| B lines from B ======= lines from C >>>>>>> C
The -A
or --show-all
option acts like the -e
option, except that it brackets conflicts, and it outputs all changes
from older to yours, not just the unmerged changes. Thus,
given the sample input files (see Sample diff3 Input), diff3
-A lao tzu tao
puts brackets around the conflict where only tzu
differs:
<<<<<<< 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
And it outputs the three-way conflict as follows:
<<<<<<< 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
The -E
or --show-overlap
option outputs less information
than the -A
or --show-all
option, because it outputs only
unmerged changes, and it never outputs the contents of the second
file. Thus the -E
option acts like the -e
option,
except that it brackets the first and third files from three-way
overlapping changes. Similarly, -X
acts like -x
, except
it brackets all its (necessarily overlapping) changes. For example,
for the three-way overlapping change above, the -E
and -X
options output the following:
<<<<<<< lao ======= -- The Way of Lao-Tzu, tr. Wing-tsit Chan >>>>>>> tao
If you are comparing files that have meaningless or uninformative names,
you can use the -L label
or --label=label
option to show alternate names in the <<<<<<<
, |||||||
and >>>>>>>
brackets. This option can be given up to three
times, once for each input file. Thus diff3 -A -L X -L Y -L Z A
B C
acts like diff3 -A A B C
, except that the output looks like
it came from files named X
, Y
and Z
rather than
from files named A
, B
and C
.