什么是 jjui?
jjui 是 Jujutsu 的终端用户界面,Jujutsu 是一个兼容 Git、通过 jj 命令使用的版本控制系统。在 jj 仓库中运行它,它会显示修订图,并让你直接在图上操作:借助自动补全修改 revset 来决定显示哪些修订,变基单个修订或整个分支,压缩、拆分和放弃修订,移动书签,打开一个修订查看它的文件和 diff 并逐个恢复文件,在修订图旁预览 jj show 和 jj diff 的输出,通过 Git 菜单推送和拉取,以及浏览或恢复操作日志。所有操作都可以用键盘或鼠标完成。jjui 由 Ibrahim Dursun 用 Go 编写,采用 MIT 许可证。
apt upgrade 就会同时更新 jjui 和它所依赖的 jj。
⚡ jjui 的主要功能
🌳 实时的修订图
jjui 打开的就是 jj log 打印的那张图,但你可以在其中移动、选择修订并对其操作,每次修改后修订图都会重新绘制。
🔎 带自动补全的 revset
编辑屏幕顶部的 revset 来选择显示哪些修订;函数和别名会在输入时自动补全,不必记住 revset 语言。
✂️ 变基、压缩、拆分、放弃
把单个修订或整个分支变基到另一个修订上,把修订压缩进其父修订,一分为二,放弃它,或者移动书签,全部在修订图中完成,并立即看到结果。
📄 文件、diff 与预览
打开一个修订,列出它改动的文件,阅读其 diff 并交互式地恢复文件,或者保留一个预览面板,显示当前所选内容的 jj show 或 jj diff 输出。
🔄 Git 菜单与操作日志
不离开修订图即可通过 Git 菜单推送和拉取,还能浏览操作日志,查看发生了哪些变化,并把仓库恢复到之前的状态。
🖱️ 键盘、鼠标、Lua 与主题
每个操作都有快捷键(按 ? 列出全部),鼠标同样可用。Lua 脚本可以添加你自己的操作,主题可以更改配色。
apt upgrade 就能让你保持最新。
📦 从 deb.griffo.io 安装
第 1 步:添加仓库
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(. /etc/os-release; echo ${DEBIAN_CODENAME:-${UBUNTU_CODENAME:-$VERSION_CODENAME}}) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update🆓 有一个永久免费的镜像。 deb-free.griffo.io 永久免费提供软件包 — 无需账号、无需订阅,最多落后上游 2 个月,安全修复立即发布。目前收录 cliamp、Forgejo Runner、Ghostty、lazydocker、Oh My Posh、Uncloud 和 Zed;jjui 不在其中,因此今天只能通过上面的仓库安装 — 提出请求即可将其加入。
第 2 步:安装 jjui
# 安装最新版 jjui(会一并安装提供 jj 的 jujutsu)
sudo apt install jjui
# 验证安装
dpkg -s jjui | grep Version# 安装最新版 jjui(会一并安装提供 jj 的 jujutsu)
apt install jjui
# 验证安装
dpkg -s jjui | grep Version第 3 步:第一次运行
# jjui 通过 jj 工作,所以要在 jj 仓库中启动
cd ~/src/myproject
# 已有的 Git 检出?先让 jj 与它共存(colocate)
jj git init --colocate
# 打开修订图
jjui
# 在 jjui 中按 ? 查看快捷键,按 q 退出🎯 基本用法示例
启动和配置 jjui:
# 打开当前仓库的修订图
jjui
# 在 $EDITOR 中编辑配置(快捷键、主题、Lua 操作)
jjui -config
# jjui 运行的是 PATH 中的 jj;查看它的版本
jj --version在 jjui 中:
# 按 ? 查看当前视图的所有快捷键
# 修改顶部的 revset(带自动补全)来选择显示的内容
# 选中一个修订,然后变基、压缩、拆分或放弃它,或者移动书签
# 打开一个修订,列出它的文件,阅读 diff 并逐个恢复文件
# 在修订图旁预览 jj show / jj diff,或打开操作日志恢复某个状态
# 通过 Git 菜单推送和拉取,无需离开修订图保持最新:
# jjui 和 jj 随系统其他软件一起更新
sudo apt update && sudo apt upgrade
# 查看已安装的版本以及可用的最新版本
apt policy jjui jujutsu
# 卸载(jj 仍会保留)
sudo apt remove jjui# jjui 和 jj 随系统其他软件一起更新
apt update && apt upgrade
# 查看已安装的版本以及可用的最新版本
apt policy jjui jujutsu
# 卸载(jj 仍会保留)
apt remove jjui🔧 工具集成
jjui 是 jj 的前端,凡是用 jj 的地方都适合它:
- Jujutsu:每个操作都会运行
jj命令,因此 jjui 看到的仓库、配置和 revset 别名与 jj 本身完全相同;软件包依赖jujutsu (>= 0.37),而 deb.griffo.io 为每个版本都打包了 Jujutsu,所以 apt 会随 jjui 一起安装它 - Git 远程仓库:在共存(colocated)仓库中,通过 Git 菜单推送和拉取会使用你平常的 Git 远程仓库和现有凭据
- 你的编辑器:
jjui -config会在$EDITOR中打开配置文件,快捷键、主题和自定义操作都在那里 - Lua 脚本:用 Lua 编写自己的操作并绑定到按键上,用于你经常执行的 jj 命令
- 主题:修订图、选中项和各个面板的颜色来自一个主题,你可以更换它或自己编写
- 鼠标:在任何支持鼠标的终端中,点击即可选择修订,滚动即可浏览修订图和预览
- 文档:上游没有提供 man 手册页,完整指南位于 idursun.github.io/jjui,在 jjui 中按
?可列出快捷键
🚀 为什么选择 deb.griffo.io?
- 官方 Ubuntu: 没有打包 jjui,在默认系统上
apt install jjui会失败 - 上游下载:从 GitHub 发布页下载只含一个二进制文件的 zip,手动复制到 PATH 中,每次发布都得重新下载,jj 还要另外安装
- 从源码构建:需要 Go 工具链,每次发布都要执行一次
go install,jj 仍需通过其他方式安装 - deb.griffo.io: 最新版本,并自动更新
- ✅ 唯一的 apt 来源:Debian 和 Ubuntu 的官方仓库都没有 jjui;本仓库打包的是上游官方发布版本
- ✅ 自带 jj:软件包依赖
jujutsu (>= 0.37)(上游要求的最低版本),而 deb.griffo.io 为每个版本都打包了 Jujutsu,所以sudo apt install jjui会在同一步装好较新的 jj - ✅ 诚实的打包:上游二进制文件位于
/usr/bin/jjui:上游没有提供 man 手册页和 shell 补全,软件包也不会凭空添加 - ✅ 自动更新: 上游发布后数小时内更新软件包
- ✅ 两种架构: 每个版本都提供 amd64 和 arm64,同一个 jjui 可以运行在笔记本、服务器以及树莓派这样的 ARM 开发板上
- ✅ 多发行版: 支持 Ubuntu 22.04、24.04、25.10 和 26.04
- ✅ 易于维护: 使用标准 apt 命令即可更新
📦 软件包构建仓库
Ubuntu 软件包在这个 GitHub 仓库中自动构建和维护:
- 🪢 jjui-debian - 最新版本构建
🔗 相关软件包
deb.griffo.io 同样提供:
- Jujutsu - jjui 所驱动的 jj 版本控制系统,会随 jjui 一起安装
- lazygit - Git 的终端界面,用于你仍然用 git 管理的仓库
- GitUI - 快速、纯键盘操作的 Git 终端界面
- difftastic - 结构化 diff 工具,jj 可以用它来显示 diff
- serie - 在终端中显示丰富的 Git 提交图