- Log
- Scroll through the jj log and view change details in side panel
- Create new changes from selected change with
n - Edit changes with
e/E - Describe changes with
d - Abandon changes with
a - Toggle between color words and git diff with
p - See different revset with
r - Set a bookmark to selected change with
b - Fetch/push with
f/p - Squash current changes to selected change with
s/S
- Files
- View files in current change and diff in side panel
- See a change's files from the log tab with
Enter - View conflicts list in current change
- Toggle between color words and git diff with
w - Untrack file with
x
- Bookmarks
- View list of bookmarks, including from all remotes with
a - Create with
c, rename withr, delete withd, forget withf - Track bookmarks with
t, untrack bookmarks withT - Create new change with
n, edit change withe/E
- View list of bookmarks, including from all remotes with
- Command log: View every command blazingjj executes
- Config: Configure blazingjj with your jj config
- Command box: Run jj commands directly in blazingjj with
: - Help: See all key mappings with
?
Make sure you have jj installed first.
- With
cargo binstall:cargo binstall blazingjj - With
cargo install:cargo install blazingjj --locked(may take a few moments to compile) - With pre-built binaries: View releases
To build and install a pre-release version: cargo install --git https://github.com/blazingjj/blazingjj.git --locked
You can optionally configure the following options through your jj config:
blazingjj.highlight-color: Changes the highlight color. Can use named colors. Defaults to#323264blazingjj.diff-format: Change the default diff format. Can becolor-wordsorgit. Defaults tocolor_words- If
blazingjj.diff-formatis not set butui.diff.formatis, the latter will be used
- If
blazingjj.diff-tool: Specify which diff tool to use by default- If
blazingjj.diff-toolis not set butui.diff.toolis, the latter will be used
- If
blazingjj.bookmark-template: Change the bookmark name template for generated bookmark names. Defaults to'push-' ++ change_id.short()- If
blazingjj.bookmark-templateis not set buttemplates.git_push_bookmarkis, the latter will be used
- If
blazingjj.layout: Changes the layout of the main and details panel. Can behorizontal(default) orverticalblazingjj.layout-percent: Changes the layout split of the main page. Should be number between 0 and 100. Defaults to50
Example: jj config set --user blazingjj.diff-format "color-words" (for storing in user config file, repo config is also supported)
To start blazingjj for the repository in the current directory: blazingjj
To use a different repository: blazingjj --path ~/path/to/repo
To start with a different default revset: blazingjj -r '::@'
See all key mappings for the current tab with ?.
- Quit with
q - Change tab with
1/2/3or withh/l - Scrolling in main panel
- Scroll down/up by one line with
j/kor down/up arrow - Scroll down/up by half page with
J/Kor down/up arrow
- Scroll down/up by one line with
- Scrolling in details panel
- Scroll down/up by one line with
Ctrl+e/Ctrl+y - Scroll down/up by a half page with
Ctrl+d/Ctrl+u - Scroll down/up by a full page with
Ctrl+f/Ctrl+b
- Scroll down/up by one line with
- Open a command popup to run jj commands using
:(jj prefix not required, e.g. writenew maininstead ofjj new main)
- Select current change with
@ - View change files in files tab with
Enter - Display different revset with
r(jj log -r) - Change details panel diff format between color words (default) and Git (and diff tool if set) with
w - Toggle details panel wrapping with
W - Create new change after highlighted change with
n(jj new)- Create new change and describe with
N(jj new -m)
- Create new change and describe with
- Edit highlighted change with
e(jj edit)- Edit highlighted change ignoring immutability with
E(jj edit --ignore-immutable)
- Edit highlighted change ignoring immutability with
- Abandon a change with
a(jj abandon) - Describe the highlighted change with
d(jj describe)- Save with
Ctrl+s - Cancel with
Esc
- Save with
- Set a bookmark to the highlighted change with
b(jj bookmark set)- Scroll in bookmark list with
j/k - Create a new bookmark with
c - Use auto-generated name with
g
- Scroll in bookmark list with
- Squash current changes (in @) to the selected change with
s(jj squash)- Squash current changes to the selected change ignoring immutability with
S(jj squash --ignore-immutable)
- Squash current changes to the selected change ignoring immutability with
- Git fetch with
f(jj git fetch)- Git fetch all remotes with
F(jj git fetch --all-remotes)
- Git fetch all remotes with
- Git push with
p(jj git push)- Git push all bookmarks with
P(jj git push --all) - Use
Ctrl+porCtrl+Pto include pushing new bookmarks (--allow-new)
- Git push all bookmarks with
- Select current change with
@ - Change details panel diff format between color words (default) and Git (and diff tool if set) with
w - Toggle details panel wrapping with
W
- Show bookmarks with all remotes with
a(jj bookmark list --all) - Create a bookmark with
c(jj bookmark create) - Rename a bookmark with
r(jj bookmark rename) - Delete a bookmark with
d(jj bookmark delete) - Forget a bookmark with
f(jj bookmark forget) - Track a bookmark with
t(only works for bookmarks with remotes) (jj bookmark track) - Untrack a bookmark with
T(only works for bookmarks with remotes) (jj bookmark untrack) - Change details panel diff format between color words (default) and Git (and diff tool if set) with
w - Toggle details panel wrapping with
W - Create a new change after the highlighted bookmark's change with
n(jj new)- Create a new change and describe with
N(jj new -m)
- Create a new change and describe with
- Edit the highlighted bookmark's change with
e(jj edit)- Edit the highlighted bookmark's change ignoring immutability with
E(jj edit --ignore-immutable)
- Edit the highlighted bookmark's change ignoring immutability with
- Select latest command with
@ - Toggle details panel wrapping with
W
Keys can be configured
[blazingjj.keybinds.log_tab]
save = "ctrl+s"See more in keybindings.md
- Install Rust and
- Clone repository
- Run with
cargo run - Build with
cargo build --release(output intarget/release) - You can point it to another jj repo with
--path:cargo run -- --path ~/other-repo
blazingjj has 2 debugging tools:
- Logging: Enabled by setting
BLAZINGJJ_LOG=1when running. Produces ablazingjj.loglog file - Tracing: Enabled by setting
BLAZINGJJ_TRACE=1when running. Producestrace-*.jsonChrome trace file, forchrome://tracingor ui.perfetto.dev
Create a release commit using cargo
release, e.g. cargo release minor, then open a PR and after it has been merged, create a GitHub release
for that commit. The "Release" workflow will fill in the description from the
changelog, generate and attach the binaries and publish the new version to
crates.io. That's it.
Blazingjj is a fork of lazyjj, started by Charles Crete in 2023.