Skip to content

ff op diff

Compare the recorded file trees of two operations. The first address is required; the second defaults to @, the live operation tip. By default, print a diffstat; -p adds the patch.

Usage

Usage: ff op diff [OPTIONS] <a> [b]

Examples

ff op diff '@^' @               # Files across the newest operation
ff op diff '@~3'                # From three operations ago to now
ff op diff -p '@~3' '@^'        # Compare two older states with a patch

Options

Arguments:
  <a>
          The older operation

  [b]
          The newer operation; `@` when omitted

Options:
  -p, --patch
          Print the patch under the diffstat, not just the counts

      --at-op <op>
          Read as of this operation (a hex id or prefix, `@`, `@^`, `@~3`)

      --at <time>
          Read as of the operation current at this time (30m/2h/3d, or a date)

      --json
          Emit machine-readable JSON

      --fetch
          Fetch now on commands that support fetching, regardless of cadence

      --no-fetch
          Skip the fetch: read the tracking refs as they stand

      --session <name>
          Session name for this invocation

  -C, --cwd <dir>
          Run as if fufu had been started in <dir>

  -h, --help
          Print help (see a summary with '-h')

Addresses and comparison scope

Addresses are hexadecimal operation IDs or unique prefixes, or @ with predecessor suffixes. @^ means the previous operation. See operation addresses.

--at-op or --at supplies the second address when that positional argument is omitted. An explicit second address takes precedence. The CLI attempts a snapshot before reading, so the live tip can include current edits.

This compares files, not ref transitions. Use ff op show to inspect ref movement. Adjacent operations can be on different branches; comparing across a switch can show the entire checkout difference. ff diff shows only the current uncommitted change.