{"id":25689102,"url":"https://github.com/gitui-org/gitui","last_synced_at":"2025-05-13T17:04:11.787Z","repository":{"id":37258548,"uuid":"247725846","full_name":"gitui-org/gitui","owner":"gitui-org","description":"Blazing 💥 fast terminal-ui for git written in rust 🦀","archived":false,"fork":false,"pushed_at":"2025-05-06T14:55:09.000Z","size":65078,"stargazers_count":19529,"open_issues_count":222,"forks_count":609,"subscribers_count":93,"default_branch":"master","last_synced_at":"2025-05-06T16:14:28.041Z","etag":null,"topics":["async","bash","command-line-interface","command-line-tool","git","hacktoberfest","rust","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gitui-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"extrawurst"}},"created_at":"2020-03-16T14:38:01.000Z","updated_at":"2025-05-06T14:54:50.000Z","dependencies_parsed_at":"2024-04-14T11:25:52.440Z","dependency_job_id":"21ba4185-8f85-4da6-a554-253e366858e1","html_url":"https://github.com/gitui-org/gitui","commit_stats":{"total_commits":2271,"total_committers":119,"mean_commits":"19.084033613445378","dds":"0.42228093350946716","last_synced_commit":"95e1d4d4324bf1eab34f8100afc7f3ae7e435252"},"previous_names":["gitui-org/gitui"],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitui-org%2Fgitui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitui-org%2Fgitui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitui-org%2Fgitui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gitui-org%2Fgitui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gitui-org","download_url":"https://codeload.github.com/gitui-org/gitui/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253990455,"owners_count":21995773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","bash","command-line-interface","command-line-tool","git","hacktoberfest","rust","terminal","tui"],"created_at":"2025-02-24T21:30:40.848Z","updated_at":"2025-05-13T17:04:11.751Z","avatar_url":"https://github.com/gitui-org.png","language":"Rust","readme":"\u003ch1 align=\"center\"\u003e\n\u003cimg width=\"300px\" src=\"assets/logo.png\" /\u003e\n\n[![CI][s0]][l0] [![crates][s1]][l1] ![MIT][s2] [![UNSAFE][s3]][l3] [![TWEET][s6]][l6] [![dep_status][s7]][l7] [![discord][s8]][l8]\n\n\u003c/h1\u003e\n\n[s0]: https://github.com/gitui-org/gitui/workflows/CI/badge.svg\n[l0]: https://github.com/gitui-org/gitui/actions\n[s1]: https://img.shields.io/crates/v/gitui.svg\n[l1]: https://crates.io/crates/gitui\n[s2]: https://img.shields.io/badge/license-MIT-blue.svg\n[s3]: https://img.shields.io/badge/unsafe-forbidden-success.svg\n[l3]: https://github.com/rust-secure-code/safety-dance/\n[s6]: https://img.shields.io/twitter/follow/extrawurst?label=follow\u0026style=social\n[l6]: https://twitter.com/intent/follow?screen_name=extrawurst\n[s7]: https://deps.rs/repo/github/gitui-org/gitui/status.svg\n[l7]: https://deps.rs/repo/github/gitui-org/gitui\n[s8]: https://img.shields.io/discord/1176858176897953872\n[l8]: https://discord.gg/rQNeEnMhus\n\n\u003ch5 align=\"center\"\u003eGitUI provides you with the comfort of a git GUI but right in your terminal\u003c/h1\u003e\n\n![](demo.gif)\n\n## \u003ca name=\"table-of-contents\"\u003e\u003c/a\u003e Table of Contents\n\n1. [Features](#features)\n2. [Motivation](#motivation)\n3. [Benchmarks](#bench)\n4. [Roadmap](#roadmap)\n5. [Limitations](#limitations)\n6. [Installation](#installation)\n7. [Build](#build)\n8. [FAQs](#faqs)\n9. [Diagnostics](#diagnostics)\n10. [Color Theme](#theme)\n11. [Key Bindings](#bindings)\n12. [Sponsoring](#sponsoring)\n13. [Inspiration](#inspiration)\n14. [Contributing](#contributing)\n15. [Contributors](#contributors)\n\n## 1. \u003ca name=\"features\"\u003e\u003c/a\u003e Features \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n- Fast and intuitive **keyboard only** control\n- Context based help (**no need to memorize** tons of hot-keys)\n- Inspect, commit, and amend changes (incl. hooks: *pre-commit*,*commit-msg*,*post-commit*,*prepare-commit-msg*)\n- Stage, unstage, revert and reset files, hunks and lines\n- Stashing (save, pop, apply, drop, and inspect)\n- Push / Fetch to / from remote\n- Branch List (create, rename, delete, checkout, remotes)\n- Browse / **Search** commit log, diff committed changes\n- Responsive terminal UI\n- Async git API for fluid control\n- Submodule support\n- gpg commit signing with shortcomings (see [#97](https://github.com/gitui-org/gitui/issues/97)))\n\n## 2. \u003ca name=\"motivation\"\u003e\u003c/a\u003e Motivation \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nI 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.\n\nUnfortunately popular git GUIs all fail on giant repositories or become unresponsive and unusable.\n\nGitUI provides you with the user experience and comfort of a git GUI but right in your terminal while being portable, fast, free and opensource.\n\n## 3. \u003ca name=\"bench\"\u003e\u003c/a\u003e Benchmarks \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nFor a [RustBerlin meetup presentation](https://youtu.be/rpilJV-eIVw?t=5334) ([slides](https://github.com/extrawurst/gitui-presentation)) I compared `lazygit`,`tig` and `gitui` by parsing the entire Linux git repository (which contains over 900k commits):\n\n|           | Time       | Memory (GB) | Binary (MB) | Freezes   | Crashes   |\n| --------- | ---------- | ----------- | ----------- | --------- | --------- |\n| `gitui`   | **24 s** ✅ | **0.17** ✅  | 10         | **No** ✅  | **No** ✅  |\n| `lazygit` | 57 s       | 2.6         | 25          | Yes       | Sometimes |\n| `tig`     | 4 m 20 s   | 1.3         | **0.6** ✅   | Sometimes | **No** ✅  |\n\n## 4. \u003ca name=\"roadmap\"\u003e\u003c/a\u003e Road(map) to 1.0 \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nThese are the high level goals before calling out `1.0`:\n\n* visualize branching structure in log tab ([#81](https://github.com/gitui-org/gitui/issues/81))\n* interactive rebase ([#32](https://github.com/gitui-org/gitui/issues/32))\n\n## 5. \u003ca name=\"limitations\"\u003e\u003c/a\u003e Known Limitations \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n- no sparse repo support (see [#1226](https://github.com/gitui-org/gitui/issues/1226))\n- no git-lfs support (see [#1089](https://github.com/gitui-org/gitui/discussions/1089))\n- *credential.helper* for https needs to be **explicitly** configured (see [#800](https://github.com/gitui-org/gitui/issues/800))\n\nCurrently, this tool does not fully substitute the _git shell_, however both tools work well in tandem.\n\nThe 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.\n\nAll support is welcomed! Sponsors as well! ❤️\n\n## 6. \u003ca name=\"installation\"\u003e\u003c/a\u003e Installation \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nGitUI 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.\n\n\u003ca href=\"https://repology.org/project/gitui/versions\"\u003e\n    \u003cimg src=\"https://repology.org/badge/vertical-allrepos/gitui.svg\" alt=\"Packaging status\" align=\"right\"\u003e\n\u003c/a\u003e\n\n### Various Package Managers\n\n\u003cdetails\u003e\n  \u003csummary\u003eInstall Instructions\u003c/summary\u003e\n\n##### [Arch Linux](https://archlinux.org/packages/extra/x86_64/gitui/)\n\n```sh\npacman -S gitui\n```\n\n##### Fedora\n\n```sh\nsudo dnf install gitui\n```\n\n##### Gentoo\nAvailable in [dm9pZCAq overlay](https://github.com/gentoo-mirror/dm9pZCAq)\n\n```sh\nsudo eselect repository enable dm9pZCAq\nsudo emerge --sync dm9pZCAq\nsudo emerge dev-vcs/gitui::dm9pZCAq\n```\n\n##### [openSUSE](https://software.opensuse.org/package/gitui)\n\n```sh\nsudo zypper install gitui\n```\n\n##### Homebrew (macOS)\n\n```sh\nbrew install gitui\n```\n\n##### [MacPorts (macOS)](https://ports.macports.org/port/gitui/details/)\n\n```sh\nport install gitui\n```\n\n##### [Winget](https://github.com/microsoft/winget-pkgs/tree/master/manifests/s/StephanDilly/gitui) (Windows)\n\n```\nwinget install gitui\n```\n\n##### [Scoop](https://github.com/ScoopInstaller/Main/blob/master/bucket/gitui.json) (Windows)\n\n```\nscoop install gitui\n```\n\n##### [Chocolatey](https://chocolatey.org/packages/gitui) (Windows)\n\n```\nchoco install gitui\n```\n\n##### [Nix](https://search.nixos.org/packages?channel=unstable\u0026show=gitui\u0026from=0\u0026size=50\u0026sort=relevance\u0026query=gitui) (Nix/NixOS)\n\nNixpkg\n```\nnix-env -iA nixpkgs.gitui\n```\nNixOS\n```\nnix-env -iA nixos.gitui\n```\n\n##### [Termux](https://github.com/termux/termux-packages/tree/master/packages/gitui) (Android)\n\n```\npkg install gitui\n```\n\n##### [Anaconda](https://anaconda.org/conda-forge/gitui)\n```\nconda install -c conda-forge gitui\n```\n\n\u003c/details\u003e\n\n### Release Binaries\n\n[Available for download in releases](https://github.com/gitui-org/gitui/releases)\n\nBinaries available for:\n\n#### Linux\n\n- gitui-linux-x86_64.tar.gz (linux musl statically linked)\n- gitui-linux-aarch64.tar.gz (linux on 64 bit arm)\n- gitui-linux-arm.tar.gz\n- gitui-linux-armv7.tar.gz\n\nAll contain a single binary file\n\n#### macOS\n\n- gitui-mac.tar.gz (arm64)\n- gitui-mac-x86.tar.gz (intel x86)\n\n#### Windows\n\n- gitui-win.tar.gz (single 64bit binary)\n- gitui-win.msi (64bit Installer package)\n\n### Nightly Builds\n\nsee [NIGHTLIES.md](./NIGHTLIES.md)\n\n## 7. \u003ca name=\"build\"\u003e\u003c/a\u003e Build \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n### Requirements\n\n- Minimum supported `rust`/`cargo` version: `1.81`\n  - See [Install Rust](https://www.rust-lang.org/tools/install)\n\n- To build openssl dependency (see https://docs.rs/openssl/latest/openssl/)\n  - perl \u003e= 5.12 (strawberry perl works for windows https://strawberryperl.com/)\n  - a c compiler (msvc, gcc or clang, cargo will find it)\n\n- To run the complete test suite python is required (and it must be invocable as `python`)\n\n### Cargo Install\n\nThe simplest way to start playing around with `gitui` is to have `cargo` build and install it with `cargo install gitui --locked`. If you are not familiar with rust and cargo: [Getting Started with Rust](https://doc.rust-lang.org/book/ch01-00-getting-started.html)\n\n### Cargo Features\n#### trace-libgit\nenable `libgit2` tracing\n\nworks if `libgit2` built with `-DENABLE_TRACE=ON`\n\nthis feature enabled by default, to disable: `cargo install --no-default-features`\n\n## 8. \u003ca name=\"faqs\"\u003e\u003c/a\u003e FAQs \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nsee [FAQs page](./FAQ.md)\n\n## 9. \u003ca name=\"diagnostics\"\u003e\u003c/a\u003e Diagnostics \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nTo run with logging enabled run `gitui -l`.\n\nThis will log to:\n\n- macOS: `$HOME/Library/Caches/gitui/gitui.log`\n- Linux using `XDG`: `$XDG_CACHE_HOME/gitui/gitui.log`\n- Linux: `$HOME/.cache/gitui/gitui.log`\n- Windows: `%LOCALAPPDATA%/gitui/gitui.log`\n\n## 10. \u003ca name=\"theme\"\u003e\u003c/a\u003e Color Theme \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n![](assets/light-theme.png)\n\n`gitui` should automatically work on both light and dark terminal themes.\n\nHowever, you can customize everything to your liking: See [Themes](THEMES.md).\n\n## 11. \u003ca name=\"bindings\"\u003e\u003c/a\u003e Key Bindings \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nThe key bindings can be customized: See [Key Config](KEY_CONFIG.md) on how to set them to `vim`-like bindings.\n\n## 12. \u003ca name=\"sponsoring\"\u003e\u003c/a\u003e Sponsoring \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n[![github](https://img.shields.io/badge/-GitHub%20Sponsors-fafbfc?logo=GitHub%20Sponsors)](https://github.com/sponsors/extrawurst)\n\n## 13. \u003ca name=\"inspiration\"\u003e\u003c/a\u003e Inspiration \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\n- [lazygit](https://github.com/jesseduffield/lazygit)\n- [tig](https://github.com/jonas/tig)\n- [GitUp](https://github.com/git-up/GitUp)\n  - It would be nice to come up with a way to have the map view available in a terminal tool\n- [git-brunch](https://github.com/andys8/git-brunch)\n\n## 14. \u003ca name=\"contributing\"\u003e\u003c/a\u003e Contributing \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## 15. \u003ca name=\"contributors\"\u003e\u003c/a\u003e Contributors \u003csmall\u003e\u003csup\u003e[Top ▲](#table-of-contents)\u003c/sup\u003e\u003c/small\u003e\n\nThanks goes to all the contributors that help make GitUI amazing! ❤️\n\nWanna become a co-maintainer? We are looking for [you](https://github.com/gitui-org/gitui/issues/2084)!\n\n\u003ca href=\"https://github.com/gitui-org/gitui/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=gitui-org/gitui\" /\u003e\n\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/extrawurst"],"categories":["Rust","bash","Applications","HarmonyOS","terminal","剪贴板工具","Table of Contents","\u003ca name=\"Rust\"\u003e\u003c/a\u003eRust"],"sub_categories":["System tools","Windows Manager","Git Client"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitui-org%2Fgitui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgitui-org%2Fgitui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgitui-org%2Fgitui/lists"}