Skip to work
05 / Independent / ashproto
Git It merge and conflict-resolution interface.

Products

The operations that rewrite history take a backup first.

Git It is a macOS Git client: a commit graph, a working copy, merges and cherry-picks with an in-app conflict resolver, several repositories open at once, and a built-in GitHub dashboard for pull requests, issues, releases, and CI runs.

Reset, amend, rebase-onto, and interactive rebase — reorder, squash, drop, reword — all run behind a configurable git-bundle backup taken before the operation, one-click undo, and a reflog browser.

Commit-time editing opens in its own drawer: select commits and shift them by an offset, set an exact time, or compress a range proportionally into a new window. It previews the result before it rewrites anything. The rewrite itself runs git-filter-repo, which ships inside the app and executes with the host’s python3.

Graph and working copy

The working copy is a row in the graph, not a separate screen.

History renders in multiple lanes with curved or angular edges, ref badges for branches, tags, remotes, and HEAD, and infinite-scroll loading. Selecting the synthetic “Uncommitted changes” row opens the file list, the commit composer, and stash.

Staging works whole-file or per hunk, and the diff beside it is unified or split, syntax-highlighted by Shiki, which is bundled so it works offline.

Git It using the NERV terminal-inspired theme.
NERV theme
Git It commit history interface.
History overview
Git It staging, sync, and GitHub workflows.
Staging and GitHub

Architecture

A Rust core under a Svelte interface.

Git It is a Tauri 2 app. The Rust side owns the git work and exposes it to the front end as typed commands grouped by area — navigation and refs, merge and cherry-pick, reset and rebase, worktree, remotes, backups, timestamps. The interface is SvelteKit 5 with runes and TypeScript, including a pure-TypeScript lane engine that computes the graph layout and is unit-tested on its own. No AppKit, no SwiftUI.

The Classic theme uses NSVisualEffect for real macOS window vibrancy. NERV replaces it with a solid high-contrast console look, six accent schemes, and optional ambient motion. Releases are built by CI as separate Apple Silicon and Intel builds.

The layer that calls git

Every operation shells out to git, so options are kept separate from operands.

Any git invocation taking a user-supplied operand separates options from operands, so a branch name or path cannot be read as a flag. Commit messages go through a temp file rather than -m. Force-push is always --force-with-lease, never bare --force.

Pull and push stream with live progress, a cancel control, and an ahead/behind indicator. Credentials are prompted on demand and passed through a generated GIT_ASKPASS helper that reads 0600 scratch files, so they never land on argv or in app state, and nothing is stored.