什么是 GitUI?
GitUI 是一个用 Rust 编写的 git 终端界面。它把图形化 git 客户端里真正值得用的部分搬进终端——暂存单个代码块和单行、阅读差异、浏览与搜索提交日志、stash、blame、分支管理和推送——而且不会像常见 GUI 那样在大型仓库上卡死。
⚡ GitUI 的主要功能
⚡ 大仓库依然飞快
上游自己的基准测试用约 24 秒、约 170 MB 内存解析完整个 Linux 内核历史,而更重的 GUI 在这里往往卡死甚至崩溃。
✂️ 暂存代码块与单行
对整文件、单个代码块或具体某一行进行暂存、取消暂存、还原和重置——这正是大多数人打开 git 图形界面的理由。
📜 日志与差异
浏览并搜索提交日志、查看任意提交的差异、逐行 blame,全部在同一个键盘驱动的界面里完成。
📦 Stash
在专门的标签页里保存、应用、弹出、丢弃和查看 stash,不用再记 git stash 的各个子命令。
🌿 分支与远程
创建、重命名、删除和切换分支,操作远程仓库,推送或拉取,全程无需回到 shell。
⌨️ 上下文帮助
? 会列出当前视图中真正可用的按键,而 key_bindings.ron 允许重新绑定一切——习惯 vim 也没问题。
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 $(lsb_release -sc 2>/dev/null) 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 $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 有一个永久免费的镜像。 deb-free.griffo.io 永久免费提供软件包 — 无需账号、无需订阅,最多落后上游 2 个月,安全修复立即发布。目前收录 cliamp、Ghostty、lazydocker、Oh My Posh 和 Zed;GitUI 不在其中,因此今天只能通过上面的仓库安装 — 提出请求即可将其加入。
🧩 关于 extrepo 选项。 extrepo 是 Debian 官方用于管理第三方仓库的工具:它会替你写好 sources 文件并安装签名密钥,并在使用前先对照签名元数据校验该密钥。本仓库以 griffo 之名登记其中,永久免费镜像则为 griffo-free,因此在 Debian(bookworm、trixie、forky、sid)上,上面的命令就是全部配置。
extrepo 只负责 sources 文件和密钥,订阅凭据仍然要写入 /etc/apt/auth.conf.d/deb.griffo.io.conf。Ubuntu 不在覆盖范围内,因为 extrepo 只发布 Debian 各套件的元数据:在 Ubuntu 上请使用 sudo 或 root 的命令。
第 2 步:安装 GitUI
# 安装最新版 GitUI
sudo apt install gitui
# 验证安装
gitui --version# 安装最新版 GitUI
apt install gitui
# 验证安装
gitui --version第 3 步:首次运行与配置
# 在任意 git 仓库中打开它
cd /path/to/your/repo
gitui
# 任何时候按 ? 都能看到当前视图可用的按键
# 主题与按键绑定都放在配置目录中
ls ~/.config/gitui/
# 例如一套 vim 风格的按键
$EDITOR ~/.config/gitui/key_bindings.ron🎯 基本用法示例
打开仓库:
# 当前目录下的仓库
gitui
# 指定某个仓库,无需先 cd 进去
gitui -d ~/src/linux
# 工作目录与 git 目录分离的情况
gitui -d ~/src/project/.git -w ~/src/project
# 启动时就在文件标签页选中某个文件
gitui -f src/main.rs外观与手感:
# 使用 ~/.config/gitui/ 中的主题文件
gitui -t mytheme.ron
# 自定义按键绑定文件
gitui -k ~/.config/gitui/key_bindings.ron
# 自定义按键符号,适配显示方式不同的键盘
gitui -s ~/.config/gitui/key_symbols.ron
# 使用文件系统监视器,而不是定时刷新
gitui --watcher需要排查问题时:
# 收集环境信息以便提交问题报告
gitui --bugreport
# 复现问题时写出日志
gitui --logging --logfile /tmp/gitui.log
# GitUI 未覆盖的部分,git 命令行依然可用
git rebase -i origin/main
# 通过 HTTPS 推送需要显式配置 credential helper
git config --global credential.helper store🔧 工具集成
GitUI 建立在你已有的 git 配置之上:
- 你的仓库:就是普通的 git 仓库,由 Rust 编写的 git 后端读写——里面没有任何 GitUI 专有的东西
- 钩子:
pre-commit、commit-msg、post-commit和prepare-commit-msg的运行方式与命令行完全一致 - GPG 签名:签名提交可用,但存在上游在问题追踪器中记录的若干限制
- 主题与按键:
~/.config/gitui/下的theme.ron、key_bindings.ron和key_symbols.ron - 通过 SSH:在远程机器上依然足够快,在服务器上整理提交不再痛苦;amd64 版本不需要任何共享库
🚀 为什么选择 deb.griffo.io?
- 官方 Debian:完全没有收录 GitUI——标准系统上
apt install gitui会失败 - cargo install gitui:版本较新,但每台机器都要长时间编译 Rust,装在 apt 之外,也不在升级流程内
- 上游压缩包:官方二进制文件,每个版本都要手动重新下载
- deb.griffo.io:最新版本,并自动更新
- ✅ 仍处于 1.0 之前:GitUI 在普通版本里就会加入真正的新功能,用不用最新版,直接决定你有没有子模块支持、日志搜索和 blame
- ✅ 唯一的 apt 来源:Debian 与 Ubuntu 官方源都没有 GitUI;本仓库打包官方上游构建
- ✅ 自动更新:上游发布后数小时内更新软件包
- ✅ 诚实的打包:上游二进制文件安装为
/usr/bin/gitui——上游没有提供手册页和补全,因此本包也不会自行编造 - ✅ 三种架构:amd64(musl 静态构建)、arm64 和 armhf,并在上游链接 glibc 的地方明确声明依赖
- ✅ 多发行版:支持 Bookworm、Trixie、Forky 和 Sid
- ✅ 易于维护:使用标准 apt 命令即可更新
📦 软件包构建仓库
Debian 软件包在这个 GitHub 仓库中自动构建和维护:
- 🎛️ gitui-debian - 最新版本构建
🔗 相关软件包
deb.griffo.io 同样提供:
- lazygit - 另一款终端 git 界面,如果你更喜欢它的布局
- Jujutsu - 兼容 Git 的版本控制系统,变基体验一流
- Forgejo - 自托管代码平台,用来接收这些分支
- Neovim - 编辑器,跟着差异直接跳过去