A clean, focused Git GUI
Visual commit graph, per-hunk staging, interactive rebase, conflict resolution, and full management dialogs for branches, remotes, submodules, and tags — built with Python and Qt.
Lane-based graph with lazy pagination, inline search (Ctrl+F) across full history, and branch navigation.
Stage or unstage individual diff hunks. Lazy diff loading with skeleton placeholders for smooth handling of large commits.
Merge options dialog (ff-only / no-ff / allow-ff), interactive rebase with pick / squash / fixup / drop, and a checkout-conflict reset prompt.
Abort / Continue banner in both panels, conflict file indicators, per-block conflict hunks, and dual-parent graph during merges.
Create, delete, and push tags. One-click stash, view contents inline, pop / apply / drop from context menu.
Push, pull, fetch with status bar indicator. Force push dialog on rejection. Remotes CRUD dialog. Background threading.
Manage submodules from a dedicated dialog, click diffs to jump into submodule repos, and detect submodule HEAD divergence in the parent.
Two-line repo entries for disambiguation, drag-and-drop reordering, submodule grouping, and keyboard shortcuts (Ctrl+W, Ctrl+1-9).
Light and dark themes with a custom typography scale, plus per-author commit stats over a configurable date range.
GitCrisp follows Clean Architecture with strict layer separation and protocol-based dependency injection.