6.0 KiB
gites
A colorful viewer for the history of a git repository.
Linux and Windows desktop app, driven from the keyboard.
Download · Keys · Build from source
What it does
-
Draws the commit graph. Every branch gets its own color. Labels on each commit show local branches, remote branches and tags, and the checked-out commit is ringed.
-
Hides what you don't need. Hide one branch with its eye button in the sidebar, or with h on a commit. Type a pattern such as
prototypes/*and choose hide or show only. The eye next to Tags hides all tags, also tags added later. gites remembers the filters of each repository. -
Folds long straight stretches. Commits in a row that have no branch, tag, fork or merge fold into one dotted line. c folds all of them, space opens or closes the one at the selected commit.
-
Shows the selected commit in a panel at the bottom: the full message, the author and committer, the hash (click to copy), the parents (click to go there), and the files it changed with the number of added and removed lines.
-
Shows what changed in a file. Click a file in the panel, or press Enter for the first one. Choose one of three layouts with v:
- One column, as
git diffprints it. - Side by side, the old file on the left and the new one on the right.
- Inline, one line per changed line, with removed words struck out and added words marked. Best for prose, such as Markdown.
In every layout, the words that changed inside a line are marked.
- One column, as
-
Opens other repositories from a list of recent ones, or from a folder picker (o).
-
Opens repositories on another machine. Write the place as
[user@]host:path, for examplegites myserver:/srv/app, or choose Open on another machine… in the repository menu (o) or on the welcome screen.hostcan be any host name from your~/.ssh/config; that file is also where a port other than 22 goes. gites runs git on that machine through ssh, so git must be installed there. It logs in with your ssh keys or the ssh agent and never asks for a password, so a login that needs a password does not work. You see the history of the repository on that machine: its own branches and its checked-out branch, as for a repository on this computer. -
Stays current. gites reloads the repository when its window gets focus again.
Install
Download a package from the releases page:
| System | File |
|---|---|
| Debian, Ubuntu | gites_<version>_amd64.deb |
| Fedora, openSUSE | gites-<version>-1.x86_64.rpm |
| Any Linux | gites_<version>_amd64.AppImage |
| Windows, installer | gites_<version>_x64-setup.exe |
| Windows, no install | gites_<version>_x64_portable.exe |
gites runs the git command, so git must be installed and on your PATH.
Use
gites # the repository in the current folder
gites ~/code/my-project # another repository
gites myserver:/srv/app # a repository on another machine, over ssh
Keys
In the commit graph
| Key | Action |
|---|---|
| ↑ ↓ or k j | Select the previous or next commit |
| PgUp PgDn | Move one screen up or down |
| g G or Home End | Go to the first or last commit |
| Enter | Show what changed in the first file of the commit |
| space | Fold or unfold the straight stretch at the selected commit |
| c | Fold or unfold all straight stretches |
| h | Hide the branch of the selected commit |
| y | Copy the short hash |
| / | Type a filter pattern |
| p | Show or hide the preview panel |
| o | Open another repository |
| r | Reload |
In a file's diff
| Key | Action |
|---|---|
| ↑ ↓ or k j | Scroll by one line |
| PgUp PgDn | Scroll by one screen |
| g G or Home End | Go to the top or bottom |
| n N | Go to the next or previous change |
| ] [ | Show the next or previous file of the commit |
| v | Switch the layout: one column, side by side, inline |
| Esc | Go back to the commit graph |
Where gites keeps its settings
The window layout, the diff layout and the recent repositories are kept in
settings.json, and the filters of each repository in filters.json. Both files are in
the gites folder of your data folder: ~/.local/share/gites on Linux,
%APPDATA%\gites on Windows.
Build from source
gites is a Tauri app: the window is Vue and TypeScript, and the part that runs git is Rust. mise installs the right versions of Node, Bun and Rust.
On Linux, Tauri also needs the WebKitGTK development packages. scripts/ci-setup.sh
lists them for Debian and Ubuntu.
mise install # Node, Bun and Rust
bun install # packages for the window code
mise run dev # run gites with live reload; add a path to open a repository
mise run test # unit tests for the window code and the Rust code
mise run check # type checks for both
mise run install # build a release binary and install it as ~/.local/bin/gites
Pushing a tag such as v1.2.3 builds the Linux and Windows packages and publishes them
on the releases page.

