https://github.com/extrawurst/gitui Skip to content Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} extrawurst / gitui Public * * Notifications * Fork 473 * Star 14.9k Blazing fast terminal-ui for git written in rust License MIT license 14.9k stars 473 forks Activity Star Notifications * Code * Issues 109 * Pull requests 34 * Discussions * Actions * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Security * Insights extrawurst/gitui This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 17 branches 51 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/e] Use Git or checkout with SVN using the web URL. [gh repo clone extraw] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @dependabot @extrawurst dependabot[bot] and extrawurst Bump anyhow from 1.0.77 to 1.0.78 ... 307d38c Jan 1, 2024 Bump anyhow from 1.0.77 to 1.0.78 Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.77 to 1.0.78. - [Release notes](https://github.com/dtolnay/anyhow/releases) - [Commits](dtolnay/anyhow@1.0.77...1.0.78) --- updated-dependencies: - dependency-name: anyhow dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] 307d38c Git stats * 2,100 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .cargo Add Linux targets for ARM, ARMv7 and AARCH64 (#1419) November 5, 2022 16:46 .github fix github action warnings using set-output September 9, 2023 11:20 .vscode cargo fmt: use hardtabs August 17, 2021 14:24 assets prep for release August 27, 2023 15:30 asyncgit Support prepare commit hook (#1978) December 16, 2023 00:07 filetreelist fix nightly build July 18, 2023 09:45 git2-hooks Support prepare commit hook (#1978) December 16, 2023 00:07 git2-testing move git hooks support into separate crate (#1971) December 7, 2023 16:28 invalidstring fix nighyly clippy November 2, 2023 07:50 scopetime bump version January 6, 2023 11:05 src fix stashing tab empty (closes #1986) December 22, 2023 17:22 wix change author name February 21, 2022 23:33 .clippy.toml bump msrv to 1.65 May 14, 2023 13:59 .gitignore add vc runtime to wix / msi package (#431) December 8, 2020 00:03 CHANGELOG.md fix stashing tab empty (closes #1986) December 22, 2023 17:22 Cargo.lock Bump anyhow from 1.0.77 to 1.0.78 January 1, 2024 10:59 Cargo.toml move git hooks support into separate crate (#1971) December 7, 2023 16:28 FAQ.md Update FAQ.md September 19, 2023 19:44 KEY_CONFIG.md remove focus key bindings February 11, 2023 10:51 LICENSE.md licence update July 30, 2023 11:53 Makefile make update_progress simpler September 3, 2023 18:34 README.md Support prepare commit hook (#1978) December 16, 2023 00:07 THEMES.md Allow customizing line break visualization (#1904) October 16, 2023 18:00 demo.gif cleanup cargo deplyment April 11, 2021 23:06 deny.toml switch back to dirs (#1783) July 30, 2023 10:44 rust-toolchain.toml Generate rust toolchain file (#1401) October 25, 2022 09:17 rustfmt.toml cargo fmt: use hardtabs August 17, 2021 14:24 vim_style_key_config.ron remove focus key bindings February 11, 2023 10:51 View code [ ] GitUI provides you with the comfort of a git GUI but right in your terminal Table of Contents 1. Features 2. Motivation 3. Benchmarks 4. Road(map) to 1.0 5. Known Limitations 6. Installation Various Package Managers Arch Linux Fedora Gentoo openSUSE Homebrew (macOS) MacPorts (macOS) Winget (Windows) Scoop (Windows) Chocolatey (Windows) Nix (Nix/NixOS) Termux (Android) Anaconda Release Binaries Linux macOS Windows 7. Build Requirements Cargo Install Cargo Features trace-libgit 8. FAQs 9. Diagnostics 10. Color Theme 11. Key Bindings 12. Sponsoring 13. Inspiration README.md [logo] CI crates MIT UNSAFE ITCH TWEET dep_status GitUI provides you with the comfort of a git GUI but right in your terminal [demo] Table of Contents 1. Features 2. Motivation 3. Benchmarks 4. Roadmap 5. Limitations 6. Installation 7. Build 8. FAQs 9. Diagnostics 10. Color Theme 11. Key Bindings 12. Sponsoring 13. Inspiration 1. Features ^Top ^ * Fast and intuitive keyboard only control * Context based help (no need to memorize tons of hot-keys) * Inspect, commit, and amend changes (incl. hooks: pre-commit, commit-msg,post-commit,prepare-commit-msg) * Stage, unstage, revert and reset files, hunks and lines * Stashing (save, pop, apply, drop, and inspect) * Push / Fetch to / from remote * Branch List (create, rename, delete, checkout, remotes) * Browse / Search commit log, diff committed changes * Responsive terminal UI * Async git API for fluid control * Submodule support 2. Motivation ^Top ^ I do most of my git work in a terminal but I frequently found myself using git GUIs for some use-cases like: index, commit, diff, stash, blame and log. Unfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable. GitUI provides you with the user experience and comfort of a git GUI but right in your terminal while being portable, fast, free and opensource. 3. Benchmarks ^Top ^ For a RustBerlin meetup presentation (slides) I compared lazygit,tig and gitui by parsing the entire Linux git repository (which contains over 900k commits): Time Memory (GB) Binary (MB) Freezes Crashes gitui 24 s 0.17 1.4 No No lazygit 57 s 2.6 16 Yes Sometimes tig 4 m 20 s 1.3 0.6 Sometimes No 4. Road(map) to 1.0 ^Top ^ These are the high level goals before calling out 1.0: * visualize branching structure in log tab (#81) * interactive rebase (#32) 5. Known Limitations ^Top ^ * no sparse repo support (see #1226) * no support for GPG signing (see #97) * no git-lfs support (see #1089) * credential.helper for https needs to be explicitly configured (see #800) Currently, this tool does not fully substitute the git shell, however both tools work well in tandem. The priorities for gitui are on features that are making me mad when done on the git shell, like stashing, staging lines or hunks. Eventually, I will be able to work on making gitui a one stop solution - but for that I need help - this is just a spare time project for now. All support is welcomed! Sponsors as well! [?] 6. Installation ^Top ^ GitUI is in beta and may contain bugs and missing features. However, for personal use it is reasonably stable and is being used while developing itself. Packaging status Various Package Managers Install Instructions Arch Linux pacman -S gitui Fedora sudo dnf install gitui Gentoo Available in dm9pZCAq overlay sudo eselect repository enable dm9pZCAq sudo emerge --sync dm9pZCAq sudo emerge dev-vcs/gitui::dm9pZCAq openSUSE sudo zypper install gitui Homebrew (macOS) brew install gitui MacPorts (macOS) port install gitui Winget (Windows) winget install gitui Scoop (Windows) scoop install gitui Chocolatey (Windows) choco install gitui Nix (Nix/NixOS) Nixpkg nix-env -iA nixpkgs.gitui NixOS nix-env -iA nixos.gitui Termux (Android) pkg install gitui Anaconda conda install -c conda-forge gitui Release Binaries Available for download in releases Binaries available for: Linux * gitui-linux-musl.tar.gz (linux on x86_64) * gitui-linux-aarch64.tar.gz (linux on 64 bit arm) * gitui-linux-arm.tar.gz * gitui-linux-armv7.tar.gz All contain a single binary file macOS * gitui-mac.tar.gz (intel Mac, uses Rosetta on Apple silicon, single binary) Windows * gitui-win.tar.gz (single 64bit binary) * gitui.msi (64bit Installer package) 7. Build ^Top ^ Requirements * Minimum supported rust/cargo version: 1.65 + See Install Rust * To build openssl dependency (see https://docs.rs/openssl/latest/ openssl/) + perl >= 5.12 (strawberry perl works for windows https:// strawberryperl.com/) + a c compiler (msvc, gcc or clang, cargo will find it) * To run the complete test suite python is required (and it must be invokable as python) Cargo Install The simplest way to start playing around with gitui is to have cargo build and install it with cargo install gitui. If you are not familiar with rust and cargo: Getting Started with Rust Cargo Features trace-libgit enable libgit2 tracing works if libgit2 builded with -DENABLE_TRACE=ON this feature enabled by default, to disable: cargo install --no-default-features 8. FAQs ^Top ^ see FAQs page 9. Diagnostics ^Top ^ To run with logging enabled run gitui -l. This will log to: * macOS: $HOME/Library/Caches/gitui/gitui.log * Linux using XDG: $XDG_CACHE_HOME/gitui/gitui.log * Linux: $HOME/.cache/gitui/gitui.log * Windows: %LOCALAPPDATA%/gitui/gitui.log 10. Color Theme ^Top ^ [light-them] gitui should automatically work on both light and dark terminal themes. However, you can customize everything to your liking: See Themes. 11. Key Bindings ^Top ^ The key bindings can be customized: See Key Config on how to set them to vim-like bindings. 12. Sponsoring ^Top ^ github Donate using Liberapay Buy Me a Coffee at ko-fi.com 13. Inspiration ^Top ^ * lazygit * tig * GitUp + It would be nice to come up with a way to have the map view available in a terminal tool * git-brunch About Blazing fast terminal-ui for git written in rust Topics git bash rust terminal async tui command-line-tool hacktoberfest command-line-interface Resources Readme License MIT license Activity Stars 14.9k stars Watchers 83 watching Forks 473 forks Report repository Releases 51 v0.24.3 Latest Sep 9, 2023 + 50 releases Sponsor this project * * ko_fi ko-fi.com/extrawurst * liberapay liberapay.com/extrawurst Learn more about GitHub Sponsors Packages 0 No packages published Used by 289 * @sarvex * @haunt98 * @caoxiemeihao * @gtheric * @pyjcode * @Playfloor * @kyoto7250 * @BasilAl + 281 Contributors 99 * @extrawurst * @dependabot[bot] * @dependabot-preview[bot] * @cruessler * @WizardOhio24 * @ImgBotApp * @dr-BEat * @pm100 * @yanganto * @jonstodle * @MCord * @alocquet * @alistaircarscadden * @alexmaco + 85 contributors Languages * Rust 99.7% * Makefile 0.3% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.