GitCrisp

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.

Download View on GitHub
GitCrisp main window

Features

📊

Visual Commit Graph

Lane-based graph with lazy pagination, inline search (Ctrl+F) across full history, and branch navigation.

🧩

Per-Hunk Staging

Stage or unstage individual diff hunks. Lazy diff loading with skeleton placeholders for smooth handling of large commits.

🌿

Branch & Rebase

Merge options dialog (ff-only / no-ff / allow-ff), interactive rebase with pick / squash / fixup / drop, and a checkout-conflict reset prompt.

⚠️

Conflict Resolution

Abort / Continue banner in both panels, conflict file indicators, per-block conflict hunks, and dual-parent graph during merges.

🏷️

Tags & Stash

Create, delete, and push tags. One-click stash, view contents inline, pop / apply / drop from context menu.

🌐

Remote Operations

Push, pull, fetch with status bar indicator. Force push dialog on rejection. Remotes CRUD dialog. Background threading.

🔗

Submodule Support

Manage submodules from a dedicated dialog, click diffs to jump into submodule repos, and detect submodule HEAD divergence in the parent.

📂

Multi-Repository

Two-line repo entries for disambiguation, drag-and-drop reordering, submodule grouping, and keyboard shortcuts (Ctrl+W, Ctrl+1-9).

🎨

Theming & Insights

Light and dark themes with a custom typography scale, plus per-author commit stats over a configurable date range.

A Closer Look

Branches dialog
Branches dialog — upstream tracking and inline management
Theme dialog
Appearance — light/dark themes and typography scale
Insight dialog
Insights — per-author commit stats over time

Architecture

GitCrisp follows Clean Architecture with strict layer separation and protocol-based dependency injection.

Domain Entities & Protocols
Application Commands & Queries
Infrastructure pygit2 Adapter, Submodule CLI & Repo Store
Presentation Qt Widgets, Dialogs & Signal Bus