Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Inspecting the state of a repository

Reset your progress

To reset your progress to the start of this chapter, run the following command:

curl https://s2p2.github.io/jj-for-everyone/reset.sh | bash -s log
cd ~/jj-tutorial/repo

Now that you have an empty repository, let's inspect it with jj log, which shows a visual history of your work.

@  mkmqlnox alice@local 2025-07-22 20:15:56 f6feaadf
│  (empty) (no description set)
◆  zzzzzzzz root() 00000000

Let's break down this output. The history graph is on the left:

  • The @ symbol represents your working copy, which is the current state of your files.
  • The ◆ symbol represents the root commit, an immutable empty state that all other commits descend from.
  • The line connects the two, showing that the working copy is a child of the root commit. History flows from bottom (oldest) to top (newest).

Each of these snapshots of your repository is called a commit. To the right of the graph is metadata about each commit. Let's look at the working copy commit:

mkmqlnox alice@local 2025-07-22 20:15:56 f6feaadf
(empty) (no description set)

Here is what the different parts mean:

  • mkmqlnox: The Change ID, which identifies a conceptual change.
  • alice@local: The author of the commit.
  • 2025-07-22...: The timestamp for when the commit was created.
  • f6feaadf: The Commit ID (or hash), which identifies this specific snapshot.
  • (empty): No files were changed in this commit compared to its parent.
  • (no description set): This commit does not have a description yet.

Note that the Change IDs, Commit IDs, and timestamps in my examples will likely differ from what you see. This is normal.

In short, a repository is a set of commits. Each commit is a snapshot of your files with associated metadata like an author, timestamp, and description. Commits are linked in a parent-child relationship to form a history.

Getting help about using Jujutsu

We've now used jj git init and jj log. To explore Jujutsu's commands on your own, you can pass the --help flag.

  • jj --help lists all available commands.
  • jj log --help shows detailed documentation and options specifically for the log command.

The help pages can be dense, but they are an excellent resource for learning and problem-solving.