A cozy, safety-first desktop Git client, with a cat mascot and a Safety Manager that snapshots before every mutation so Undo is always one keystroke away
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Git you can take back.
A cozy, safety-first desktop Git client — Tauri 2 + Rust + Svelte 5. Every mutation snapshots first, so ⌘Z always works.
Every Git GUI makes it easy to run a dangerous command. GitCat is built so you can take it back: a Safety Manager snapshots refs, index, worktree and stash before every mutation, so a global Undo (⌘Z) is always one keystroke away — and Undo is itself undoable.查看完整 README ↗Git you can take back.
A cozy, safety-first desktop Git client — Tauri 2 + Rust + Svelte 5. Everyday history-changing operations snapshot your branches first, so ⌘Z can put them back.
Website & docs · Download · User guide
Every Git GUI makes it easy to run a dangerous command. GitCat is built so you can take it back: before everyday history-changing operations (commit, merge, rebase, reset, cherry-pick, revert, …) the Safety Manager pins a snapshot of HEAD and every local branch tip, so a global Undo (⌘Z) rewinds them in one keystroke — and Undo is itself undoable. Uncommitted work isn't in that snapshot, but some of it has its own safety nets: discarded changes are backed up under .git/gitgui/discard-backup/ first, deleted branches, tags and dropped stashes are pinned under refs/gitgui/ so they stay recoverable, and if Undo finds a dirty working tree it offers to stash, undo and re-apply rather than overwrite it. A hard reset discards uncommitted changes for good, so it asks for a typed confirmation, and git-filter-repo sits outside ⌘Z with its own full git bundle backup instead.
git bisect, git blame with rename-following, per-file history, author and pickaxe search, a git-filter-repo wizard, external diff/merge tools, reflog rescue and dangling-object recovery. Partial clones (--filter=blob:none) work too, fetching file contents on demand.git(). Browse and install ready-made ones from inside the app (Tools ▸ Plugins… → Browse), backed by the community plugin index.gitcat . — open a repo from your terminal the way code . does (gitcat --help for the rest). WSL-aware.Full list: Features.
| Commit detail & diff | ⌘K command palette |
| Settings | Chinese (中文) interface |
| Korean (한국어) interface | Light theme |
Tama is the Safety Manager, not a mascot bolted on for cuteness — she's the one pinning the snapshot. Eight expressions wired to real moments: curious while you search, thinking hard mid-rebase, genuinely alarmed right before something irreversible, celebrating once it's safely done.
Grab an installer from the Releases page — macOS (Apple Silicon + Intel), Windows (x86_64 + arm64) and Linux (x86_64 + arm64; .deb/.rpm/.AppImage), all built from the same tag.
Builds are unsigned for now. macOS: right-click → Open the first time. Windows: More info → Run anyway. Full per-platform steps, including macOS Sequoia, are in the install guide.
gitcat on your PATHRun Install 'gitcat' command from Settings → Command line (or ⌘K), then open a new terminal:
gitcat . # open the repo in the current directory
gitcat ~/src/my-project # open a repo by path
gitcat -- -odd-name # a path that starts with '-'
gitcat --version # print the version (-V); --help (-h) prints usage
It writes a launcher to /usr/local/bin (macOS), ~/.local/bin (Linux), or %LOCALAPPDATA%\Microsoft\WindowsApps (Windows, plus one inside each WSL distro). The .deb/.rpm packages already put gitcat on PATH.
Needs Rust, Node 22+ and pnpm 10 (corepack enable pnpm if you don't have it — the exact version is pinned in package.json's packageManager). On Linux, Tauri also wants WebKitGTK/GTK3 dev headers; on NixOS, nix develop has everything.
pnpm install
pnpm tauri dev # launch the app
pnpm demo # build a rich throwaway repo at ~/gitcat-demo to poke at
| Command | What it does |
|---|---|
pnpm check | svelte-check (type-check the frontend) |
pnpm test | vitest (frontend unit tests) |
pnpm test:e2e | playwright (real browser, mocked IPC) |
pnpm screenshots | regenerate docs/public/screenshots/ |
pnpm docs:dev | run the docs site locally |
cargo test | the Rust suite (from src-tauri/) |
See CONTRIBUTING.md before opening a PR.
src-tauri/) — git2 for reads, the git CLI for writes (everyday history-changing writes snapshot first), tauri-specta for a typed IPC boundary generated into src/ipc/bindings.tscargo test + pnpm test on every push, a 6-platform release matrix on tags, and a VitePress site auto-deployed to GitHub PagesGitCat is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details, or https://www.gnu.org/licenses/.
Copyright © 2026 Jiucheng Zang [email protected]