Features

Everything implemented end-to-end today. platypusgit is in active development — the list grows.

The platypusgit window with no repository open. A centred card reads “Welcome to PlatypusGit — open, clone, or create a repository to get started”, above an Open repository button and, below it, Clone repository and New repository buttons. A line under them reads “Pick any directory containing a .git folder.” The status bar reads “No repository open” on the left and “⌘O to open…” on the right.
Where every session starts: point it at a directory that already has a .git folder, clone a remote, or create a repository from nothing.

How it compares

The four clients developers arrive from, on the things you can check yourself: what it costs, what it wants from you, and what it sends home.

ClientPriceAccountTelemetryPlatformsLicence
platypusgitFreeNoneNonemacOS · Windows · LinuxGPL-3.0
GitKraken DesktopFree for local and public repos — a paid seat for private onesAccount for private reposUsage analytics plus the folder and file names where you keep your codemacOS · Windows · LinuxProprietary
Fork$59.99 once, up to 3 machinesNoneNone — crash reports onlymacOS · WindowsProprietary
SourcetreeFreeAtlassian account requiredAnonymous usage data, opt-outmacOS · WindowsProprietary
TortoiseGitFreeNoneCrash dumps, unless disabled at installWindows onlyGPL-2.0

GitKraken ships as an Electron app. Fork, Sourcetree and TortoiseGit are native. platypusgit is a Tauri binary that uses the OS webview rather than bundling a browser of its own.

Checked against each vendor's own pages on 25 August 2026. Prices and privacy policies change, so every claim links to the page it came from — any cell here can be re-checked in a minute.

Staging

Granular control over what goes into a commit.

  • ✓Stage / unstage / discard whole files
  • ✓Stage / unstage / discard individual hunks
  • ✓Stage / unstage / discard individual lines
  • ✓Stage the focused diff line from the keyboard with Space
  • ✓Drag files between Changes and Staged
  • ✓Commit with amend and author override

Diff & viewing

See exactly what changed, anywhere.

  • ✓Worktree / index / HEAD diffs
  • ✓Whole-file diffs by default — a continuous file with no `@@` banners, changed lines coloured, and Stage / Discard in the gutter beside each change block
  • ✓Scrubable minimap beside the diff — the shape and spread of a change at a glance, click or drag to jump
  • ✓Unified and side-by-side (split) diff views, with a persisted default
  • ✓Long lines scroll the pane rather than wrapping over the row below, or wrap on demand with the Diff screen's Wrap toggle
  • ✓Syntax highlighting on every diff, blame and preview surface — tokenized off the main thread
  • ✓Word-level highlighting within a changed line
  • ✓Configurable diff context lines, with a fold separator that names what it hides and expands it in place
  • ✓Commit-to-commit diffs — one commit, or the combined diff across a selected range
  • ✓Branch compare — any two refs, or a ref against the working tree, with ahead/behind, both commit lists and the combined diff
  • ✓Line-by-line blame
  • ✓Repo file browser at HEAD, or any revision
  • ✓git-LFS pointers are shown as the objects they are, not as two lines of text
The platypusgit commit screen. A file list on the left has one staged file, parser.ts, with its checkbox ticked under a STAGED heading, and three more under CHANGES — NOTES.md untracked, engine.ts modified, lexer.test with 7 added and 6 removed lines. The middle of the window shows src/engine.ts as a side-by-side diff with syntax highlighting: removed lines tinted red on the left, added lines tinted green on the right, and the added text reads "UNCOMMITTED: descriptions being made explicit about overflow and domain errors". On the right, a commit message box with a type and scope picker under it, then checkboxes for amending the previous commit, adding a Signed-off-by trailer, signing the commit and skipping hooks, author and co-author fields, the committer identity read from the global git config, a "1 file, +6 -0" summary, and Commit and Commit & Push buttons.
Staged and unstaged files, the diff of the file you picked, and the message you are writing — one screen, no dialogs.

Branches & tags

Full ref management.

  • ✓List / create / checkout / rename / delete branches
  • ✓Default branch pinned to the top of every branch list, the rest ordered by most recent commit
  • ✓Merge or rebase onto any branch — local or remote — straight from the branch picker, the titlebar chip or the Branches screen
  • ✓Lightweight and annotated tags
  • ✓GPG/SSH signed tags — defaults from `tag.gpgsign`, overridable per tag, with a verification badge on the tag you select
  • ✓Push and delete tags

History

Navigate the past.

  • ✓Commit graph layout
  • ✓Ref-scoped log — browse the log of any branch, tag, or revspec
  • ✓Commit / log search (message, author, SHA, date, path)
  • ✓Per-file history
  • ✓Reflog viewer
  • ✓Detached-HEAD checkout
  • ✓Customizable HEAD indicator — six independent marks at three weights

History manipulation

Rewrite with care.

  • ✓Reset — soft / mixed / hard
  • ✓Cherry-pick
  • ✓Revert
  • ✓Bisect — good / bad / skip from the operation bar, with git's own progress estimate
  • ✓Drag a ref or commit onto another to merge, rebase or cherry-pick

Stash

Park work in progress.

  • ✓Save / apply / pop / drop
  • ✓Partial stash — stash only the paths you selected, one file or a multi-selection
  • ✓Rename a stash entry
  • ✓Compare a stash — what it changed, or against the working tree
  • ✓Stash to new branch

Conflict resolution

Resolve merges without leaving the app.

  • ✓3-way conflict sides
  • ✓Dedicated merge resolver window — ours · editable result · theirs
  • ✓Operation bar — the app announces a merge, rebase or cherry-pick in progress
  • ✓Accept ours / theirs
  • ✓External mergetool launch
  • ✓Continue / abort operation

Interactive rebase

Reshape history visually.

  • ✓Pick / reword / edit / squash / fixup / drop
  • ✓Merge commits — flatten (git default) or preserve topology
  • ✓Continue / abort, resumable after quitting the app
  • ✓Reorder steps by drag, or with Mod+Shift+↑/↓
  • ✓Rebase base picker

Remotes & network

Sync with anywhere.

  • ✓Add / remove / rename / prune remotes
  • ✓Fetch / fetch-all / pull
  • ✓Push with-lease and force
  • ✓Authenticated remotes — every network op prompts and retries, tag pushes and branch deletes included
  • ✓Merge branches

Pull requests

GitHub and GitLab, including self-hosted.

  • ✓List open pull / merge requests — author, source → target, draft and fork markers
  • ✓CI / checks summary for the selected request
  • ✓Check out a request locally, forks included
  • ✓Create a request from the current branch, as a draft if you want
  • ✓Open in the browser in one click
  • ✓Per-host API token, stored by your own git credential helper under its own key

Submodules, LFS & worktrees

The parts of a repository that are also repositories.

  • ✓Submodule screen — init, update (recursive), sync URLs, open one as its own repository
  • ✓Submodules are distinguished from embedded repositories in the file tree
  • ✓git-LFS panel — fetch objects, pull objects, checkout, with pointer-aware diffs
  • ✓Linked worktrees — list, add on a new or existing branch, lock / unlock, remove, prune
  • ✓Removing a worktree with uncommitted work asks a second time before forcing

Navigation & keyboard

Keyboard-first, fast everywhere.

  • ✓Multi-repo tabs — several repositories open at once, with ⌘E, ⌥1–⌥9 and Ctrl+Tab
  • ✓Several windows — open a repository in a new window (Mod+Shift+D) or move a tab out, each window with its own tab strip and session, restored on relaunch
  • ✓Command palette (⌘P) — branches, files, commits, and actions
  • ✓Rider-style default keymap, with a Classic preset
  • ✓Type-to-jump speed-search in lists
  • ✓Commit chords, F7 / ⇧F7 hunk navigation, and stage / discard of the hunk you are on from the keyboard
  • ✓Spatial Alt+Arrow pane focus and a ? cheat sheet
  • ✓Resizable panels — drag any panel to whatever the window allows, double-click a handle to reset it
  • ✓`pgit` command-line launcher — open a repo from the terminal and get the prompt straight back, installed by the `.deb` and `.msi` packages or from Settings

Planned

On the roadmap, not yet shipped.