gitui — 用 Rust 编写的极速终端 Git 界面(TUI)
GitUI 把 Git GUI 的操作体验搬进终端:纯键盘操作、上下文帮助、暂存/提交/修改、分支与远程管理、Stash、提交日志浏览与 diff 等,主打在超大型仓库中依然快速不卡顿(解析含 90 万+ 提交的 Linux 仓库仅需 24 秒、占用 0.17GB 内存)。项目处于 beta 阶段,尚未完全替代 git shell。
社区作者 · zZz
它解决什么问题
GitUI 的目标是:给你 Git 图形界面的舒适体验,但直接运行在终端里。作者日常在终端里做 Git 工作,却常常为了 index、commit、diff、stash、blame、log 等场景切换到 Git GUI,而流行的 Git GUI 在巨型仓库上会卡死或失去响应,于是有了 GitUI——便携、快速、免费、开源。
核心特性(Features):
- 快速且直观,纯键盘控制;
- 基于上下文的帮助(无需记忆大量快捷键);
- 查看、提交与 amend 变更,支持 hooks:pre-commit、commit-msg、post-commit、prepare-commit-msg;
- 对文件、hunk 和行进行 stage / unstage / revert / reset;
- Stash 支持 save、pop、apply、drop 与查看;
- Push / Fetch 远程仓库;
- 分支列表(创建、重命名、删除、checkout、远程分支);
- 浏览/搜索提交日志,查看已提交变更的 diff;
- 响应式终端 UI;
- 异步 Git API,操作流畅;
- 支持 Submodule;
- 支持 gpg 提交签名(存在已知不足,见 issue #97)。
Benchmarks(解析整个 Linux Git 仓库,包含 90 万+ 提交,用于 RustBerlin 分享):
- gitui:24 秒、内存 0.17 GB、二进制 10 MB、无卡死、无崩溃;
- lazygit:57 秒、内存 2.6 GB、二进制 25 MB、有卡死、偶尔崩溃;
- tig:4 分 20 秒、内存 1.3 GB、二进制 0.6 MB、偶尔卡死、无崩溃。
Roadmap(1.0 之前的高层目标):
- 在 log 标签页可视化分支结构(#81);
- 交互式 rebase(#32);
- 不支持 git-lfs(见 #2812)。
已知限制(Known Limitations):
目前该工具还不能完全替代 git shell,两者配合使用效果良好;gitui 的重点放在那些在 git shell 上做起来令人抓狂的功能(如 stash、逐行或逐 hunk 暂存)。
- 不支持 sparse repo(稀疏仓库,见 #1226);
- https 的 credential.helper 需要显式配置(见 #800)。
视觉资料:配图 1 为项目 logo;配图 2 为 deps.rs 依赖状态徽章;配图 3 为 demo 动图,展示终端内的实际操作流程;配图 4 为 light-theme 浅色主题界面截图;配图 5 为贡献者头像墙。
主题与键位:gitui 应能自动适配浅色和深色终端主题,也可完全自定义(见 Themes 文档);键位可自定义,支持设置为 vim 风格绑定(见 Key Config)。
灵感来源:lazygit、tig、GitUp、git-brunch(并希望未来能在终端工具中提供 map 视图)。
许可证:来源正文未明确给出许可证名称与版本,待核验。
适用对象:习惯在终端工作、需要频繁做暂存/提交/Stash/日志 diff 的开发者;在巨型仓库中受够 GUI 卡顿的工程师;希望用纯键盘完成 Git 操作的 Vim 用户。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
一、准备环境
- 需要一个可用的终端与 Git 仓库(工具本身即为操作 Git 使用)。
- 若使用发布二进制或包管理器安装,一般无需额外运行时依赖。
若自行编译:最低支持的 Rust / Cargo 版本为 1.88(见 Install Rust 指引);构建 openssl 依赖需要 perl >= 5.12(Windows 可用 strawberry perl,https://strawberryperl.com/ );需要一个 C 编译器(msvc、gcc 或 clang,
cargo 会自动查找);运行完整测试套件需要 python,且必须以 python 命令调用。
二、通过包管理器安装(按平台直接执行)
Arch Linux:
pacman -S gituisudo eselect repository enable dm9pZCAq sudo emerge --sync dm9pZCAq sudo emerge dev-vcs/gitui::dm9pZCAq
- Fedora:sudo dnf install gitui
- Gentoo(在 dm9pZCAq overlay 中):
- openSUSE:sudo zypper install gitui
Homebrew (macOS):
brew install gitui- MacPorts (macOS):port install gitui
Winget (Windows):winget install gituiScoop (Windows):scoop install gituiChocolatey (Windows)
choco install gitui- Mise:mise use -g gitui@latest
- Nixpkg:nix-env -iA nixpkgs.gitui
- NixOS:nix-env -iA nixos.gitui
- Termux (Android):pkg install gitui
Anaconda:
conda install -c conda-forge gitui三、使用发布二进制(releases 页面下载) 可用平台与文件:
夜间构建(Nightly Builds)参见仓库中的 NIGHTLIES.md。
- Linux:gitui-linux-x86_64.tar.gz(linux musl 静态链接)、gitui-linux-aarch64.tar.gz(64 位 arm)、gitui-linux-arm.tar.gz、gitui-linux-armv7.tar.gz;均为单个二进制文件。
- macOS:gitui-mac.tar.gz(arm64)、gitui-mac-x86.tar.gz(intel x86)。
- Windows:gitui-win.tar.gz(单个 64 位二进制)、gitui-win.msi(64 位安装包)。
四、从源码编译安装(Cargo) 最简单的上手方式是用 cargo 构建并安装:
cargo install gitui --locked如果不熟悉 Rust / Cargo,可先看 “Getting Started with Rust”。
Cargo Features:trace-libgit:启用 libgit2 tracing,需 libgit2 以 -DENABLE_TRACE=ON 构建;该 feature 默认启用,如需关闭:
cargo install --no-default-features五、首次运行与诊断
macOS:$HOME/Library/Caches/gitui/gitui.log Linux(XDG):$XDG_CACHE_HOME/gitui/gitui.log Linux:$HOME/.cache/gitui/gitui.log Windows:%LOCALAPPDATA%/gitui/gitui.log
- 启用日志运行:gitui -l
- 日志输出位置:
六、常见问题与配置
- 常见问题见 FAQ 页面(FAQs)。
- 主题:默认应适配浅色与深色终端;如需自定义全部颜色见 Themes 文档(配图 4 为 light-theme 效果)。
- 键位:可自定义,支持改为 vim 风格绑定,见 Key Config 文档。
- https 场景下 credential.helper 需要显式配置(见 issue #800)。
- 不支持稀疏仓库(sparse repo,见 #1226),也未支持 git-lfs(见 #2812)。
- 项目处于 beta,可能存在 bug 与缺失功能;作者称个人使用已相当稳定,并且开发过程本身就在使用它。