A fast, native macOS git client — commit graph, branches, merges, rebases, working-copy diffs, and remotes — with first-class commit-time editing. Built with Tauri 2 (Rust) and SvelteKit 5 (runes).
macOS only. In its default Classic theme the window uses native vibrancy (frosted-glass panels over the desktop) via
NSVisualEffect; the NERV theme swaps in a solid high-contrast console look (Settings → Appearance).
⬇ Download the latest release — open the .dmg, drag Git It.app into /Applications, and launch. It keeps itself up to date after that (in-app auto-updates, with an optional beta channel in Settings → Updates).
Requires macOS 12.3+. The release ships separate Apple Silicon and Intel builds — download the
.dmgthat matches your Mac (each runs fully native). In-app updates then track the right build automatically.
- Commit graph — multi-lane history with curved or angular edges, ref badges (branches, tags, remotes,
HEAD), infinite-scroll loading, and selectable rows. - Navigation & refs — checkout, create/delete branches and tags, fetch — from a right-click menu.
- Integrate — merge (plain /
--no-ff), cherry-pick, and revert, with an in-app conflict resolver (use-ours / use-theirs / continue / abort). - Rewrite history — soft/mixed/hard reset, amend, rebase-onto, and interactive rebase (reorder / squash / drop / reword), with a configurable auto-backup (git bundle) before destructive ops and one-click undo plus a reflog browser.
- Working copy — file list, whole-file and per-hunk stage / unstage / discard, a commit composer, and stash — reached via a synthetic "Uncommitted changes" row in the graph.
- Diff viewer — syntax-highlighted (Shiki, bundled offline), unified or split, with per-hunk staging.
- Remotes — manage remotes; streamed pull (merge or rebase) and push (
--force-with-lease,--set-upstream) with live progress, cancel, and an ahead/behind indicator. Credentials are prompted on demand and never stored. - Commit-time editing — select commits and shift them by an offset, set an exact time, or compress a range proportionally into a new window. Opens in an on-demand drawer; previews before it rewrites.
- Multi-repo — open several repositories at once, as tabs or a sidebar list (your choice).
- Themes — Settings → Appearance switches the whole UI between Classic (native macOS vibrancy) and NERV, a high-contrast HUD console theme with six accent schemes and optional ambient motion.

Inspect any commit — changed files and a syntax-highlighted diff, unified or split, with per-hunk staging.

Built-in GitHub — pull requests, issues, releases, and CI runs, right next to your local history.

Settings — graph styling, date formatting, and in-app auto-updates with an optional beta channel.
Git It needs git and python3, both of which ship with the Xcode Command Line Tools:
xcode-select --installgit-filter-repo — used by the commit-time editing feature — is bundled inside the app and run with the host's python3, so there is nothing extra to install.
If git or python3 is missing, the app shows a startup banner with an Install Command Line Tools button (it runs xcode-select --install for you). No Python interpreter is bundled — only the interpreter is host-provided; the git-filter-repo script itself ships with the app.
- Open the
.dmg(built withnpm run tauri build). - Drag Git It.app into
/Applications. - First launch: right-click the app → Open (Gatekeeper warns for ad-hoc-signed builds).
npm install
npm run tauri dev # run the app in development
npm run tauri build # produce Git It.app + a .dmg under src-tauri/target/release/bundle/Checks and tests:
npm run check # Svelte + TypeScript
npm test # Vitest (lane engine + diff parser)
cd src-tauri && cargo check # Rust
cd src-tauri && cargo test # Rust tests| Layer | What it does | Files |
|---|---|---|
| Rust commands | typed Tauri command surface | src-tauri/src/commands.rs, lib.rs |
| Git operations | subprocess wrappers per area | git_ops.rs (core), ops.rs (nav/refs), ops_merge.rs (merge/cherry-pick/revert), ops_rewrite.rs (reset/amend/rebase), ops_worktree.rs (status/stage/diff/stash), ops_remote.rs (pull/push/credentials), safety.rs (backups/undo), rewrite.rs (timestamps) |
| Graph data | parents, refs, lanes, status | src-tauri/src/graph.rs, types.rs |
| Lane engine | pure-TS graph layout (fully unit-tested) | src/lib/graph/ |
| TypeScript API | typed invoke() wrappers |
src/lib/api.ts, src/lib/gitActions.ts |
| State | central reactive store (Svelte 5 runes) | src/lib/store.svelte.ts |
| UI | one component per panel/dialog/drawer | src/lib/components/*.svelte |
| Shell | app layout + chrome | src/routes/+page.svelte |
Security note: every git invocation that takes a user-supplied operand separates options from operands (-- / --end-of-options) so a crafted branch/ref/path can't smuggle in a flag; force-push is always --force-with-lease, never bare --force; commit messages go through a temp file, never -m; and credentials are passed via a generated GIT_ASKPASS reading 0600 scratch files, never on argv or in app state.
The commit-time critical path — building the git-filter-repo callback that maps each selected commit to its new epoch/offset — lives in src-tauri/src/rewrite.rs.
npm run tauri build -- --bundles dmg
# → src-tauri/target/release/bundle/dmg/Git It_0.1.0_aarch64.dmgAd-hoc signing (fine for trusted users; Gatekeeper warns on first launch):
codesign --force --deep --sign - "src-tauri/target/release/bundle/macos/Git It.app"For zero-friction installs, sign with an Apple Developer ID and notarize — tauri.conf.json supports bundle.macOS.signingIdentity and the notarization environment variables.
Production releases are built, signed, and notarized automatically by GitHub Actions — see docs/RELEASING.md for the release pipeline and the in-app updater (stable + beta channels).
- macOS only (the vibrancy/glass and titlebar handling are macOS-specific).
gitandpython3must be present (both come with the Xcode Command Line Tools); commit-time editing runs the bundledgit-filter-repovia the hostpython3. The startup banner surfaces a missing prerequisite and offers to install the tools.- Ad-hoc-signed builds trigger a Gatekeeper warning on first launch.
- Very large histories load incrementally but aren't yet DOM-virtualized.
Free · source-available · noncommercial — Git It is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 (CC BY-NC-SA 4.0). See LICENSE for the full terms.
- Use it for anything, including at work. Managing your repositories with Git It — personal or commercial — is fine. The noncommercial term is about the app itself, not the work you produce with it.
- Don't commercialize the app. No reselling, repackaging-and-selling, or offering it as a paid hosted service.
- ShareAlike. Distribute modified versions under these same terms.
Want a commercial arrangement this license doesn't cover? Open an issue. This is a source-available, noncommercial license — not an OSI-approved open-source license.
Git It bundles git-filter-repo under the MIT License; its notice ships at src-tauri/resources/git-filter-repo/COPYING.mit.
