LinuxCommandLibrary

jj-evolog

Show commit evolution log

TLDR

Show how a revision has evolved over time

$ jj evolog [[-r|--revisions]] [revsets]
copy

Show diff statistics in the evolution log
$ jj evolog [[-r|--revisions]] [revsets] --stat
copy

Show summary of each change in the evolution log
$ jj evolog [[-r|--revisions]] [revsets] [[-s|--summary]]
copy

SYNOPSIS

jj evolog [OPTIONS] [REVSET]

PARAMETERS

-r, --revision <REVSET>
    Revset selecting revisions to show (default: roots()..@)

--limit <LIMIT>
    Limit number of revisions displayed (default: 25)

--no-graph
    Disable graph rendering; show flat list

--color <WHEN>
    Colorization mode: always|never|auto (default: auto)

--no-pager
    Disable pager for output

-R, --repository <PATH>
    Repository to operate on (default: current)

--by-change-id
    Group and sort by change ID (default behavior)

--template <FORMAT>
    Custom template for revision rendering

DESCRIPTION

jj evolog is a subcommand of the Jujutsu (jj) version control system that displays an evolutionary log—a compact graph showing how changes evolve across commits.

Unlike traditional logs like jj log or git log, which list commits chronologically, jj evolog groups commits by their change ID, highlighting the progression of a single logical change through rebases, amendments, and conflicts. This makes it ideal for understanding complex histories in Git-compatible workflows.

It renders a text-based graph with branches, merges, and evolutionary paths, using colors for visibility. Supports revsets for filtering (e.g., trunk..) and pagination. Best for developers navigating non-linear histories in jj repositories.

Key benefits: Reduces noise from automatic rebases; focuses on semantic changes; integrates with jj's operation log for full context.

CAVEATS

Experimental in early jj versions; graph may truncate long histories.
Requires jj ≥ 0.18.0. Not compatible with plain Git repos without jj init.

EXAMPLE

jj evolog -r trunk.. — Show evolution on trunk branch.
jj evolog --limit 10 @- — Recent changes on working copy.

CONFIGURATION

Customize via [ui] section in ~/.config/jj/config.toml: default-revset-evol = "roots()..@".

HISTORY

Introduced in Jujutsu 0.18.0 (2024) by Martin von Zweigbergk to address limitations of linear logs in rewrite-heavy workflows. Evolved in 0.20+ with better revset support and templates.

SEE ALSO

jj log(1), jj op log(1), git log(1)

Copied to clipboard