1
0
Fork
You've already forked Gitte
0
forked from ckruse/Gitte
A GTK4/libadwaita Git client for the GNOME desktop, written in Rust with Relm4.
  • Rust 98.7%
  • Meson 0.6%
  • Nix 0.5%
  • CSS 0.1%
  • Shell 0.1%
2026年04月28日 07:34:27 +02:00
data version 0.1.9 2026年04月27日 21:59:04 +02:00
po add a shortcut for pull 2026年04月15日 15:14:38 +02:00
scripts preparations for publishing to Flathub 2026年04月15日 15:11:24 +02:00
src fix: manually add git config from ~/.config/git/config 2026年04月27日 21:55:07 +02:00
.envrc initial commit 2026年03月30日 14:18:09 +02:00
.gitignore ignore flatpak files 2026年04月16日 08:05:10 +02:00
.rustfmt.toml cargo fmt with the new .rustfmt.toml 2026年04月05日 13:31:47 +02:00
build.rs use relm4-icons icons to avoid flatpak issues 2026年04月16日 13:38:40 +02:00
cargo-sources.json update deps 2026年04月26日 18:15:23 +02:00
Cargo.lock version 0.1.9 2026年04月27日 21:59:04 +02:00
Cargo.toml version 0.1.9 2026年04月27日 21:59:04 +02:00
COPYING initial commit 2026年03月30日 14:18:09 +02:00
de.wwwtech.gitte.json use oo7 for keychain handling 2026年04月17日 07:17:27 +02:00
flake.lock nix flake update 2026年04月21日 15:56:46 +02:00
flake.nix pin rust to 1.94.1 for now 2026年04月23日 07:26:57 +02:00
meson.build version 0.1.9 2026年04月27日 21:59:04 +02:00
meson.options preparations for publishing to Flathub 2026年04月15日 15:11:24 +02:00
README.md add a flathub banner 2026年04月28日 07:34:27 +02:00
SCREENSHOTS.md move screenshots to wwwtech.de 2026年04月20日 12:32:32 +02:00

Gitte

A GTK4/libadwaita Git client for the GNOME desktop, written in Rust. It is heavily inspired by Git Tower. The name Gitte is a play on words. It is the diminutive form of the German female first name Brigitte and is pronounced "Git-ty" in English (with a hard G like in GIF).

Git GUI showing staged and unstaged changes with a diff view of a Rust file, highlighting modified lines and chunk actions

See SCREENSHOTS.md for more screenshots.

Get it on Flathub

Features

Repository Management

  • Add, rename, and remove repositories; initialize new Git repos
  • Copy paths or open them in the file manager
  • Search across repositories on the start screen
  • Configurable sort order (manual, by name, by last opened)

Working Copy

  • See all changed files with their status (modified, added, deleted, renamed)
  • Stage and unstage at the file, hunk, or individual line level
  • Discard changes at file, hunk, or line level
  • Copy file paths or open them in the file manager

Interactive Diff Viewer

  • Syntax-highlighted additions and deletions (green and red)
  • Stage, unstage, or discard changes per hunk or per line
  • Sticky hunk headers while scrolling
  • View diffs for commits and stashes

Commits

  • Write commit messages with subject and body
  • Amend the last commit
  • Browse commit history with pagination
  • View commit diffs with tag and upstream markers

Branches

  • Create, rename, and delete branches
  • Checkout local and remote branches
  • Track upstream branches with ahead/behind counts
  • Smart handling of dirty working directories (stash-before-switch)
  • Collapsible branch groups in the sidebar

Tags

  • Create lightweight and annotated tags
  • Delete tags
  • Push tags to remotes (with force push option)
  • Multiple sort methods (semver, alphabetical, date) with ascending/descending order

Pull

  • Pull from any remote with branch selection
  • Fast-forward, merge, and rebase strategies
  • Auto-stash uncommitted changes before pulling
  • Prune remote tracking branches during pull
  • Fetch tags option
  • Conflict detection for merge and rebase

Push

  • Push to any remote with branch selection
  • Set upstream tracking branch automatically
  • Force push option (with visual warning)
  • Push tags to remotes
  • No-op detection to skip redundant pushes

Remotes

  • List remotes and their remote-tracking branches
  • Push branches with upstream configuration
  • Fetch from single or all remotes
  • Auto-fetch at configurable intervals

Stashes

  • Create stashes (with or without untracked files)
  • Apply, pop, and drop stashes
  • Inspect stash diffs

Credentials

  • SSH key agent support
  • HTTP basic auth with secure keychain storage via Secret Service (D-Bus)

UI & Integration

  • Built with libadwaita for a modern GNOME look and feel
  • Resizable split panes with persistent positions; window size persistence
  • Multi-window support
  • Gettext-based internationalization (i18n)

Keyboard Shortcuts

Action Shortcut
New Window Ctrl+N
Search Ctrl+F
Add Repository Ctrl+Shift+A
Preferences Ctrl+,
Quit Ctrl+Q
Fetch Ctrl+Shift+F
Pull Ctrl+P
Push Ctrl+Shift+P
Stash Ctrl+Shift+S
Stash Including Untracked Ctrl+Shift+U
Pop Latest Stash Ctrl+Shift+O
Create Tag Ctrl+Shift+T
Focus Commit Message Ctrl+Shift+C
Commit Ctrl+Return
Stage/Unstage Space / Return
Discard Changes Delete

Building

Dependencies

  • Rust toolchain (stable)
  • GTK 4 (>= 4.16)
  • libadwaita (>= 1.6)
  • libgit2
  • Meson
  • Ninja

On Fedora:

sudo dnf install gtk4-devel libadwaita-devel libgit2-devel meson ninja-build

On Arch Linux:

sudo pacman -S gtk4 libadwaita libgit2 meson ninja

On NixOS (or with Nix):

nix develop

This enters a dev shell with all dependencies provided via flake.nix.

Build & Install

meson setup builddir
meson compile -C builddir
meson install -C builddir

Note: src/config.rs is generated by Meson from src/config.rs.in. You need to run meson compile at least once before cargo check or cargo build will work.

Flatpak

The Flatpak version of Gitte uses the --filesystem=home permission to access Git repositories in your home directory. This means that system-wide configuration files like /etc/gitconfig cannot be read from within the sandbox.

If you need settings from /etc/gitconfig, you can override the Flatpak permissions:

flatpak override --user --filesystem=/etc/gitconfig:ro de.wwwtech.gitte

Alternatively, you can copy the relevant settings into your user-specific ~/.gitconfig.

Contributing

Contributions are welcome! Please make sure your code passes cargo clippy without warnings before submitting a pull request. However, code generated fully or partially by Large Language Models (LLMs) such as ChatGPT, Copilot, or similar tools is not accepted. Please ensure that all submitted code is written and understood by you, so it can be properly reviewed and maintained.

License

Gitte is licensed under the AGPL-3.0-or-later.