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

status

Show the branch-aware commit graph. This is the default command when running git loom with no arguments.

Usage

git loom [status] [-f [COMMIT...]] [N]

Arguments

ArgumentDescription
NNumber of context commits to show before the base (default: 1)

Options

OptionDescription
-f, --files [COMMIT...]Show files changed in each commit, optionally filtered to specific commits
-a, --allShow all branches including hidden ones

Output

The status displays a branch-aware commit graph using UTF-8 box-drawing characters, showing commits grouped by feature branch:

╭─ [local changes]
│   !! conflicted.rs
│    M file.txt
│   A  new_file.rs
│    ⁕ untracked.txt
│
│╭─ [feature-b] ✓
│●   d0472f9 Fix bug in feature B
│●   7a067a9 Start feature B
├╯
│
│╭─ [feature-a] ↑
│●   2ee61e1 Add feature A
├╯
│
● ff1b247 (upstream) [origin/main] Initial commit

Sections

The graph is rendered top-to-bottom with these sections:

  1. Local changes — shown only if the working tree has modifications, new files, or deletions. Files are split into three groups:

    • Conflicted files are shown first with a !! marker in bold red (filename also bold red). These appear during an in-progress rebase or merge.
    • Tracked changes are listed next with a 2-char XY status matching git status --short (index green, worktree red).
    • Untracked files are listed last with a marker (magenta). When there are more than 5 untracked files, they are displayed in a multi-column grid layout sized to the terminal width.
  2. Feature branches — each branch is rendered as a side branch with its name in brackets, followed by its commits, closed with ├╯. A remote tracking indicator appears after the closing ] when an upstream has been configured for the branch.

  3. Loose commits — commits not belonging to any feature branch, shown on the main integration line.

  4. Upstream marker — the merge-base between HEAD and the upstream tracking branch.

Symbols

SymbolMeaning
╭─Start of a section
├─Start of a subsequent branch in a stack
Integration line continuation
││Continuation between stacked branches
A commit
├╯End of a side branch
!!Conflicted file marker (bold red)
Untracked file marker (magenta)
Upstream has new commits
·Context commit before the base (dimmed)
Branch remote is in sync (green)
Branch has unpushed commits (yellow)
Branch remote is gone (red)

Short IDs

Each branch, commit, and file in the output is assigned a short ID — a compact identifier you can use with other git-loom commands. What you see in the status is what you type.

Showing Files

Use -f to show the files changed in each commit:

git loom status -f
│╭─ fa [feature-a]
│●    d0 Add feature A
│┊      d0:0 M  src/feature.rs
│┊      d0:1 A  tests/feature_test.rs
├╯

To show files for specific commits only, pass their short IDs or git hashes after -f:

git loom status -f d0
git loom status -f d0 ab
git loom status -f abc1234

Only the listed commits display their file list; all other commits are rendered normally. Unknown identifiers are silently ignored.

Branch Topologies

Independent branches

Each feature branch forks from the integration line independently:

│╭─ [feature-b]
│●   d0472f9 Fix bug in feature B
├╯
│
│╭─ [feature-a]
│●   2ee61e1 Add feature A
├╯

Stacked branches

Feature-b is stacked on top of feature-a:

│╭─ [feature-b]
│●   4e046ab Second commit on feature-b
│●   0b85ca7 First commit on feature-b
││
│├─ [feature-a]
│●   caa87a9 Second commit on feature-a
│●   18faee8 First commit on feature-a
├╯

Co-located branches

Multiple branches pointing to the same commit:

│╭─ [feature-a-v2]
│├─ [feature-a]
│●   2ee61e1 Add feature A
├╯

Upstream ahead

When upstream has new commits beyond the common base:

●   abc1234 Fix typo
│
│●  [origin/main] ⏫ 3 new commits
├╯ 204e309 (common base) 2025-07-06 Merge pull request #10

Context commits

Show history before the base with a positional argument (git loom 3 or git loom status 3):

● ff1b247 (upstream) [origin/main] Initial commit
· abc1234 2025-07-05 Previous work
· def5678 2025-07-04 Earlier change

Context commits are dimmed and display-only (no short ID, not actionable). The default is 1 (no extra context).

Hidden Branches

Branches whose names start with the configured prefix (default: local-) are hidden from the status output by default. Both the branch section and its commits are fully suppressed — they do not appear as loose commits either.

This is useful for keeping local-only branches (personal configuration, secrets) out of the status view without removing them from the integration branch.

git loom --all          # show all branches including hidden
git loom status --all   # same, explicit

The hidden prefix is configurable (see Configuration).

Theming

The graph colors adapt to the terminal background via the global --theme flag:

git loom --theme light status   # Light terminal background
git loom --theme dark status    # Dark terminal background
git loom --theme auto status    # Auto-detect (default)

See Configuration for details.

Prerequisites

  • Must be on a local branch (not detached HEAD)
  • Branch must have an upstream tracking branch configured