gitui-org/gitui

GitHub: gitui-org/gitui

用 Rust 编写的高性能终端 Git 界面工具,在终端中提供接近 GUI 的舒适操作体验,尤其擅长处理大型仓库。

Stars: 21685 | Forks: 706

[![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/bfbffeef8f085437.svg)][l0] [![crates](https://img.shields.io/crates/v/gitui.svg)][l1] ![MIT](https://img.shields.io/badge/license-MIT-blue.svg) [![UNSAFE](https://img.shields.io/badge/unsafe-forbidden-success.svg)][l3] [![TWEET](https://img.shields.io/twitter/follow/extrawurst?label=follow&style=social)][l6] [![dep_status](https://deps.rs/repo/github/gitui-org/gitui/status.svg)][l7] [![discord](https://img.shields.io/discord/1176858176897953872)][l8]

GitUI 为您提供 git GUI 般的舒适体验,就在您的终端中
![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c1b32224e1085444.gif) ## 目录 1. [功能特性](#features) 2. [初衷](#motivation) 3. [性能基准测试](#bench) 4. [路线图](#roadmap) 5. [局限性](#limitations) 6. [安装说明](#installation) 7. [构建](#build) 8. [常见问题](#faqs) 9. [诊断](#diagnostics) 10. [颜色主题](#theme) 11. [快捷键](#bindings) 12. [赞助](#sponsoring) 13. [灵感来源](#inspiration) 14. [贡献指南](#contributing) 15. [贡献者](#contributors) ## 1. 功能特性 [回到顶部 ▲](#table-of-contents) - 快速且直观的**纯键盘**控制 - 基于上下文的帮助(**无需记忆**大量的快捷键) - 检查、提交和修改更改(包括钩子:*pre-commit*、*commit-msg*、*post-commit*、*prepare-commit-msg*) - 暂存、取消暂存、还原和重置文件、代码块和单行 - 暂存(保存、弹出、应用、丢弃和检查) - Push / Fetch 远程仓库 - 分支列表(创建、重命名、删除、检出、远程分支) - 浏览 / **搜索**提交日志,对比已提交的更改 - 响应式终端 UI - 异步 git API 带来流畅的操作体验 - 支持 Submodule - gpg 提交签名,但存在一些缺陷(参见 [#97](https://github.com/gitui-org/gitui/issues/97))) ## 2. 初衷 [回到顶部 ▲](#table-of-contents) 我大部分的 git 工作都在终端中完成,但我经常发现自己会在某些场景下使用 git GUI,例如:索引、提交、差异对比、暂存、blame 和日志查看。 不幸的是,流行的 git GUI 在处理超大型仓库时往往都会失败,或者变得反应迟钝且无法使用。 GitUI 为您提供了 git GUI 的用户体验和舒适度,但它就在您的终端中运行,同时具备便携、快速、免费和开源的特点。 ## 3. 性能基准测试 [回到顶部 ▲](#table-of-contents) 在一次 [RustBerlin 聚会演讲](https://youtu.be/rpilJV-eIVw?t=5334)([幻灯片](https://github.com/extrawurst/gitui-presentation))中,我通过解析整个 Linux git 仓库(包含超过 90 万次提交)对比了 `lazygit`、`tig` 和 `gitui`: | | 耗时 | 内存 (GB) | 二进制文件 (MB) | 卡顿 | 崩溃 | | --------- | ---------- | ----------- | ----------- | --------- | --------- | | `gitui` | **24 s** ✅ | **0.17** ✅ | 10 | **无** ✅ | **无** ✅ | | `lazygit` | 57 s | 2.6 | 25 | 有 | 偶尔 | | `tig` | 4 m 20 s | 1.3 | **0.6** ✅ | 偶尔 | **无** ✅ | ## 4. 1.0 版本路线图 [回到顶部 ▲](#table-of-contents) 这些是正式发布 `1.0` 版本之前的高层级目标: * 在 log 标签页中可视化分支结构 ([#81](https://github.com/gitui-org/gitui/issues/81)) * 交互式 rebase ([#32](https://github.com/gitui-org/gitui/issues/32)) - 不支持 git-lfs(参见 [#2812](https://github.com/gitui-org/gitui/issues/2812)) ## 5. 已知局限性 [回到顶部 ▲](#table-of-contents) - 不支持 sparse repo(参见 [#1226](https://github.com/gitui-org/gitui/issues/1226)) - 需要为 https **显式**配置 *credential.helper*(参见 [#800](https://github.com/gitui-org/gitui/issues/800)) 目前,这个工具并不能完全替代 _git shell_,但是这两个工具可以很好地配合使用。 `gitui` 的优先重点是放在那些让我在 _git shell_ 中操作时感到抓狂的功能上,比如暂存、暂存单行或代码块。最终,我会致力于将 `gitui` 打造成一个一站式的解决方案——但为此我需要帮助——目前这只是一个业余时间维护的项目。 欢迎任何形式的支持!也欢迎赞助!❤️ ## 6. 安装说明 [回到顶部 ▲](#table-of-contents) GitUI 目前处于测试阶段,可能包含一些 Bug 和缺失的功能。然而,对于个人使用而言,它已经相当稳定,并且其本身也是在自我开发的过程中被使用着。 Packaging status ### 各种包管理器
安装说明 ##### [Arch Linux](https://archlinux.org/packages/extra/x86_64/gitui/) ``` pacman -S gitui ``` ##### Fedora ``` sudo dnf install gitui ``` ##### Gentoo 可在 [dm9pZCAq overlay](https://github.com/gentoo-mirror/dm9pZCAq) 中获取 ``` sudo eselect repository enable dm9pZCAq sudo emerge --sync dm9pZCAq sudo emerge dev-vcs/gitui::dm9pZCAq ``` ##### [openSUSE](https://software.opensuse.org/package/gitui) ``` sudo zypper install gitui ``` ##### Homebrew (macOS) ``` brew install gitui ``` ##### [MacPorts (macOS)](https://ports.macports.org/port/gitui/details/) ``` port install gitui ``` ##### [Winget](https://github.com/microsoft/winget-pkgs/tree/master/manifests/s/StephanDilly/gitui) (Windows) ``` winget install gitui ``` ##### [Scoop](https://github.com/ScoopInstaller/Main/blob/master/bucket/gitui.json) (Windows) ``` scoop install gitui ``` ##### [Chocolatey](https://chocolatey.org/packages/gitui) (Windows) ``` choco install gitui ``` ##### [Mise](https://github.com/jdx/mise) ``` mise use -g gitui@latest ``` ##### [Nix](https://search.nixos.org/packages?channel=unstable&show=gitui&from=0&size=50&sort=relevance&query=gitui) (Nix/NixOS) Nixpkg ``` nix-env -iA nixpkgs.gitui ``` NixOS ``` nix-env -iA nixos.gitui ``` ##### [Termux](https://github.com/termux/termux-packages/tree/master/packages/gitui) (Android) ``` pkg install gitui ``` ##### [Anaconda](https://anaconda.org/conda-forge/gitui) ``` conda install -c conda-forge gitui ```
### 发布版二进制文件 [在 releases 中可供下载](https://github.com/gitui-org/gitui/releases) 可用的二进制文件包括: #### Linux - gitui-linux-x86_64.tar.gz (linux musl 静态链接) - gitui-linux-aarch64.tar.gz (64 位 arm 上的 linux) - 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 位安装包) ### 每日构建 参见 [NIGHTLIES.md](./NIGHTLIES.md) ## 7. 构建 [回到顶部 ▲](#table-of-contents) ### 前置条件 - 最低支持的 `rust`/`cargo` 版本:`1.88` - 参见 [安装 Rust](https://www.rust-lang.org/tools/install) - 用于构建 openssl 依赖(参见 https://docs.rs/openssl/latest/openssl/) - perl >= 5.12(Windows 推荐使用 strawberry perl:https://strawberryperl.com/) - 一个 C 语言编译器(msvc、gcc 或 clang,cargo 会自动找到它) - 要运行完整的测试套件,需要安装 python(并且必须能以 `python` 命令调用) ### Cargo 安装 开始体验 `gitui` 最简单的方法是使用 `cargo` 进行构建并安装,运行 `cargo install gitui --locked`。如果您不熟悉 Rust 和 Cargo:[Rust 入门指南](https://doc.rust-lang.org/book/ch01-00-getting-started.html) ### Cargo Features #### trace-libgit 启用 `libgit2` 跟踪 仅在 `libgit2` 使用 `-DENABLE_TRACE=ON` 参数构建时有效 此功能默认启用,若要禁用请使用:`cargo install --no-default-features` ## 8. 常见问题 [回到顶部 ▲](#table-of-contents) 参见 [常见问题页面](./FAQ.md) ## 9. 诊断 [回到顶部 ▲](#table-of-contents) 要启用日志记录运行 `gitui -l`。 日志文件将保存至: - 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` ## 10. 颜色主题 [回到顶部 ▲](#table-of-contents) ![](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5c6d7b4efd085447.png) `gitui` 能够自动适应亮色和暗色终端主题。 然而,您可以根据自己的喜好自定义所有内容:参见[主题](THEMES.md)。 ## 11. 快捷键 [回到顶部 ▲](#table-of-contents) 快捷键是可以自定义的:参见 [按键配置](KEY_CONFIG.md) 了解如何将它们设置为类似 `vim` 的按键风格。 ## 13. 灵感来源 [回到顶部 ▲](#table-of-contents) - [lazygit](https://github.com/jesseduffield/lazygit) - [tig](https://github.com/jonas/tig) - [GitUp](https://github.com/git-up/GitUp) - 如果能想出一种方法在终端工具中提供地图视图(map view)那就太好了 - [git-brunch](https://github.com/andys8/git-brunch) ## 14. 贡献指南 [回到顶部 ▲](#table-of-contents) 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 15. 贡献者 [回到顶部 ▲](#table-of-contents) 感谢所有帮助让 GitUI 变得更棒贡献者!❤️ 想成为共同维护者吗?我们正在寻找[你](https://github.com/gitui-org/gitui/issues/2084)!
标签:DNS解析, Git客户端, GPG签名, GUI替代, Rust, Stash, TUI, 代码提交, 分支管理, 可视化界面, 威胁情报, 安全可观测性, 差异比较, 开发者工具, 开源项目, 异步API, 快速操作, 暂存区, 极客工具, 版本控制, 终端用户界面, 网络流量审计, 通知系统, 键盘控制