Comparing and Merging Files - 13. Invoking diff3

Go to the first, previous, next, last section, table of contents.

# 13. Invoking `diff3`

The `diff3` command compares three files and outputs descriptions of their differences. Its arguments are as follows:

    diff3 options... mine older yours

The files to compare are mine, older, and yours. At most one of these three file names may be ``-'`, which tells `diff3` to read the standard input for that file.

An exit status of 0 means `diff3` was successful, 1 means some conflicts were found, and 2 means trouble.

## 13.1 Options to `diff3`

Below is a summary of all of the options that GNU `diff3` accepts. Multiple single letter options (unless they take an argument) can be combined into a single command line argument.

``-a'`
  Treat all files as text and compare them line-by-line, even if they do not appear to be text. See section 1.7 Binary Files and Forcing Text Comparisons.
``-A'`
  Incorporate all changes from older to yours into mine, surrounding all conflicts with bracket lines. See section 7.2 Marking Conflicts.
``-e'`
  Generate an `ed` script that incorporates all the changes from older to yours into mine. See section 7.1 Selecting Which Changes to Incorporate.
``-E'`
  Like ``-e'`, except bracket lines from overlapping changes' first and third files. See section 7.2 Marking Conflicts. With ``-e'`, an overlapping change looks like this:

      <<<<<<< mine
      lines from mine
      =======
      lines from yours
      >>>>>>> yours

``--ed'`
  Generate an `ed` script that incorporates all the changes from older to yours into mine. See section 7.1 Selecting Which Changes to Incorporate.
``--easy-only'`
  Like ``-e'`, except output only the nonoverlapping changes. See section 7.1 Selecting Which Changes to Incorporate.
``-i'`
  Generate ``w'` and ``q'` commands at the end of the `ed` script for System V compatibility. This option must be combined with one of the ``-AeExX3'` options, and may not be combined with ``-m'`. See section 7.5 Saving the Changed File.
``--initial-tab'`
  Output a tab rather than two spaces before the text of a line in normal format. This causes the alignment of tabs in the line to look normal. See section 4.1 Preserving Tabstop Alignment.
``-L label'`
``--label=label'`
  Use the label label for the brackets output by the ``-A'`, ``-E'` and ``-X'` options. This option may be given up to three times, one for each input file. The default labels are the names of the input files. Thus ``diff3 -L X -L Y -L Z -m A B C'` acts like ``diff3 -m 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'`. See section 7.2 Marking Conflicts.
``-m'`
``--merge'`
  Apply the edit script to the first file and send the result to standard output. Unlike piping the output from `diff3` to `ed`, this works even for binary files and incomplete lines. ``-A'` is assumed if no edit script option is specified. See section 7.3 Generating the Merged Output Directly.
``--overlap-only'`
  Like ``-e'`, except output only the overlapping changes. See section 7.1 Selecting Which Changes to Incorporate.
``--show-all'`
  Incorporate all unmerged changes from older to yours into mine, surrounding all overlapping changes with bracket lines. See section 7.2 Marking Conflicts.
``--show-overlap'`
  Like ``-e'`, except bracket lines from overlapping changes' first and third files. See section 7.2 Marking Conflicts.
``-T'`
  Output a tab rather than two spaces before the text of a line in normal format. This causes the alignment of tabs in the line to look normal. See section 4.1 Preserving Tabstop Alignment.
``--text'`
  Treat all files as text and compare them line-by-line, even if they do not appear to be text. See section 1.7 Binary Files and Forcing Text Comparisons.
``-v'`
``--version'`
  Output the version number of `diff3`.
``-x'`
  Like ``-e'`, except output only the overlapping changes. See section 7.1 Selecting Which Changes to Incorporate.
``-X'`
  Like ``-E'`, except output only the overlapping changes. In other words, like ``-x'`, except bracket changes as in ``-E'`. See section 7.2 Marking Conflicts.
``-3'`
  Like ``-e'`, except output only the nonoverlapping changes. See section 7.1 Selecting Which Changes to Incorporate.

Go to the first, previous, next, last section, table of contents.