show
Decoded git show for encoded commits.
Overview
mx show decodes the output of git show
the same way mx log decodes
git log. Because mx commit encodes every commit
message through a randomly selected base-d
dictionary, raw git show displays unreadable glyphs
where the commit message should be. mx show reverses
the encoding and displays your original message while passing
everything else – diffs, stats, file content – through
unchanged.
It is a drop-in replacement for git show. Every flag
that git show accepts works with
mx show.
NOTE: Always use mx show to inspect
commits. Raw git show will show encoded noise for any
commit made with mx commit.
Basic usage
Show the most recent commit with its diff:
mx showShow a specific commit:
mx show abc1234Show a commit with diffstat instead of the full diff:
mx show --statShow only the commit message (no diff):
mx show --no-patchShow only filenames changed:
mx show --name-onlyHow it works
mx show uses a two-pass approach:
Pass 1 runs
git showwith--no-patchand a structured format to retrieve commit metadata (hash, author, date, parent hashes) and the encoded message body. The body is decoded using the same pipeline asmx log– the footer tag identifies the dictionary and compression algorithm, and the body is decompressed back to your original message.Pass 2 runs
git showwith an empty format string to retrieve just the diff output. This is streamed to your terminal as-is, identical to whatgit showwould produce.
The result looks exactly like git show output,
except the commit message is readable.
Passthrough modes
In certain cases, mx show skips decoding entirely
and runs raw git show:
File content (
ref:pathsyntax) – when you usemx show HEAD:src/main.rsto view a file at a specific revision, there is no commit message to decode. The command passes through togit showdirectly.Custom format (
--formator--pretty) – when you control the output format yourself, decoding would interfere. The command passes through unchanged.
Fallback behavior
If decoding fails for any reason – the commit was not made with
mx commit, the footer is missing, or the dictionary
lookup fails – mx show falls back to displaying the raw
message exactly as git show would. It is always safe to
use mx show in place of git show, even in
repositories with a mix of encoded and non-encoded commits.
Merge commits
Merge commits display a Merge: line showing the
parent hashes, matching the default git show
format:
commit abc1234def5678...
Merge: aaa1111 bbb2222
Author: Charlie <charlie@example.com>
Date: Wed May 7 2026
the decoded merge commit message
Multiple refs
You can pass multiple refs and mx show will decode
each one:
mx show HEAD HEAD~1 HEAD~2Tags
When showing a tag, mx show displays the tag
metadata followed by the decoded commit it points to. If the tag
object itself is not a commit (e.g. an annotated tag preamble), its
content is printed as-is.
Flags reference
mx show accepts all flags that git show
accepts. There are no mx-specific flags – the command is designed to
be a transparent wrapper.
Common flags:
Flag |
Description |
|---|---|
|
Show a diffstat summary instead of the full diff. |
|
Show only the commit header and message, no diff. |
|
Shorthand for |
|
Show only the names of changed files. |
|
Show names and status (added, modified, deleted) of changed files. |
|
Show the diff in raw format. |
|
Custom format string (passthrough – skips decoding). |
|
Alias for |
Any arguments not listed here are passed directly to
git show.
Relationship to mx log and mx commit
mx commit, mx log, and
mx show form a complete encoding round-trip:
mx commitencodes your message and writes it as an encoded git commit.mx logdecodes the commit history (replacesgit log).mx showdecodes individual commit details (replacesgit show).
Both mx log and mx show have full
parity with their git counterparts. Every flag that
git log or git show accepts works with the
mx versions, with transparent decoding applied to encoded messages.
mx log supports --oneline,
--stat, -p, format presets
(short, medium, full,
fuller), and all git log filter flags
(--author, --since,
-- <path>, etc.). Non-encoded commits pass
through unchanged in all three commands.
For the full encoding specification, see commit. For the full flag reference and architecture details, see log.