| Crates.io | git-viewer |
| lib.rs | git-viewer |
| version | 0.2.0 |
| created_at | 2025-12-30 01:33:22.008001+00 |
| updated_at | 2026-01-11 02:12:47.491578+00 |
| description | Pure Rust gitk clone for the terminal |
| homepage | https://github.com/est31/giv |
| repository | https://github.com/est31/giv |
| max_upload_size | |
| id | 2011798 |
| size | 139,216 |
Pure Rust gitk clone for the terminal
The tool builds on gitoxide as well as ratatui.
cargo install git-viewer
gitk is one of the first guis for git and in my personal opinion, it is still better than most
of the guis that came after it. It shows the most relevant content right away, without hiding it somewhere.
The usual goal for a git ui is to make changing state easier (checking out a branch, making a commit, merging a branch, etc), so the focus is not mainly on showing the state.
Thus, most if not all git uis fail the simple test: is there a way, with a single click or a single keypress, to switch between the diff view of different commits?
gitui for example takes 6 keypresses.
One can emulate something like this via git log -p, by using the less search /^commit then n/N,
but it's not perfect and takes a lot of time to "set up".
There is more tests for the usability of a git tool:
The more complicated this is, and the more clicks are needed, the harder it is to get an overview of changes that happen in a certain commit
Many people still use gitk, and many people wrote their own terminal clone of gitk for similar motivations. Why did I write my own instead of use one of the existing alternatives?
First, it's fun to do so, second, I wanted to try out both gitoxide and ratatui for a non-trivial project.
If I write my own tool, I don't need to convince the maintainers to merge my changes, I can scratch my itch in precisely the way I want it to be scratched.
We depend on a bunch of components, but we try to support rust versions at least 6 releases back.
This tool is distributed under the terms of both the MIT license and the Apache License (Version 2.0), at your option.
See LICENSE for details.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.