t, the working directory files are compared to its first parent. To
see the differences from another revision, use --from. To see the difference
to another revision, use --to. For example, :hg:`diff --from .^` will show
the differences from the working copy's grandparent to the working copy,
:hg:`diff --to .` will show the diff from the working copy to its parent
(i.e. the reverse of the default), and :hg:`diff --from 1.0 --to 1.2` will
show the diff between those two revisions.

Alternatively you can specify -c/--change with a revision to see the changes
in that changeset relative to its first parent (i.e. :hg:`diff -c 42` is
equivalent to :hg:`diff --from 42^ --to 42`)

Without the -a/--text option, diff will avoid generating diffs of
files it detects as binary. With -a, diff will generate a diff
anyway, probably with undesirable results.

Use the -g/--git option to generate diffs in the git extended diff
format. For more information, read :hg:`help diffs`.

.. container:: verbose

  Examples:

  - compare a file in the current working directory to its parent::

      hg diff foo.c

  - compare two historical versions of a directory, with rename info::

      hg diff --git --from 1.0 --to 1.2 lib/

  - get change stats relative to the last change on some date::

      hg diff --stat --from "date('may 2')"

  - diff all newly-added files that contain a keyword::

      hg diff "set:added() and grep(GNU)"

  - compare a revision and its parents::

      hg diff -c 9353                  # compare against first parent
      hg diff --from 9353^ --to 9353   # same using revset syntax
      hg diff --from 9353^2 --to 9353  # compare against the second parent

Returns 0 on success.
r‘