DevCatz has Git in two places: the Git section in the rail, for your accounts, SSH keys and an overview of every site, and the Git tab of each site, for the day-to-day work — staging, committing, branching, rebasing and pull requests.
It uses the git on your computer with your own config, credential helpers and SSH keys. Nothing is replaced:
what works in your terminal works here, and the other way round. Git works on macOS and Windows.
When there is no git yet, the Git section says so — git is missing — and how to get one:
run xcode-select --install in Terminalinstall Git for Windows from
git-scm.com.
The Git section (rail)
The rail’s Git section has three tabs.
Sites
Overview / Sites is a table of every site that is a Git repository: its Branch, how many files are Changed, and the commits to Push / pull. It refreshes every 20 seconds. Open Git tab jumps to a site.
The same status shows as a chip on each site in the Projects sidebar: ● changed, ↑ ahead, ↓ behind, and amber when there is a conflict.
SSH keys
The keys in ~/.ssh%USERPROFILE%\.ssh, used for git@… remotes:
- Copy public key, to paste into a host by hand.
- Add to account, to add it to a connected account in one click.
- Generate makes a new ed25519 key without a passphrase:
id_ed25519when that name is free (ssh uses it by default), otherwiseid_ed25519_devcatz— which needs anIdentityFileline in your SSH config.
Accounts
Connect an account links a Git host with a personal access token:
| Host | Notes |
|---|---|
| GitHub | |
| GitLab | gitlab.com or your own server |
| Gitea / Forgejo | Your server’s address |
| Bitbucket | Cloud and Server |
Enter the Server (for self-hosted), Username and Personal access token — the Create one ↗ link opens the host’s token page — and press Connect. The token goes into the Keychain (item Catzoid Git)Windows’ protected storage (DPAPI), tied to your account, never into a settings file. Remove… forgets an account.
Each account lists its repositories (with private and fork tags) and Clone as site…, which clones it and
adds it as a site in one go. The SSH button clones with git@… (the account needs your SSH key).
For HTTPS remotes, DevCatz hands the account’s token to git through GIT_ASKPASS when git asks for it.
Shared with DialCatz
DevCatz and DialCatz use the same Git accounts. The account itself (name, host, avatar —
never the token) is kept in ~/Library/Application Support/Catzoid/shared.json%APPDATA%\Catzoid\shared.json
under git.accounts, and its token in the Keychain item Catzoid GitWindows’
protected storage (DPAPI), as %APPDATA%\Catzoid\git\<account>.dpapi. Connect or remove an account in one
app and the other follows. See What the cats share.
A site’s Git tab
Every site gets a Git tab, with a chip showing its state. If the folder is not a repository yet, the tab offers
Initialize repository (git init -b main).
The header
- Fetch.
- Pull ▾ — Pull (merge) or Pull with rebase (with
--autostash). - Push ▾ — Push or Force push (with lease)…, which asks first.
- The remotes, with Add remote.
- Your identity (name and email), for this repository or
--global.
Fetch, pull, push, pushing tags and checking out a pull request run as tasks: their output goes to the site’s Logs tab, and each one can be cancelled.
Changes
Changes (n) lists every changed file.
- Stage, Unstage and Discard per file, or Stage all, Unstage all and Discard all.
- A coloured diff for the selected file, and Open in editor.
- Write a message and press Commit (mod+enter), or Commit & Push. Amend last commit folds the changes into the previous commit.
- ✦ Write with AI drafts the commit message from the staged diff (see below).
- .gitignore: Suggest lines offers entries to add, and Edit… opens the file (mod+S saves).
History
Search the log of any branch and open a commit’s patch. From a commit you can:
- cherry-pick it onto the current branch,
- revert it,
- reset to it — soft, mixed or hard,
- restore a file as it was there,
- squash everything since the base branch into one commit.
Branches & tags
- Branches: Create & switch, Switch, Check out a remote branch (tracking it), Merge into the current branch, Delete or force delete.
- Rebase the current branch onto another.
- Stashes: Stash changes (untracked files included), Apply, Pop, Drop.
- Tags: create annotated tags, Push them, Delete them.
Conflicts
When a merge, rebase, cherry-pick, revert or stash pop stops on a conflict, the tab walks you through it: open each file, fix it, Mark resolved, then Continue. A rebase also has Skip this commit, and you can Abort at any point to go back to where you started.
Worktrees
Worktrees lists the repository’s worktrees and makes new ones with New worktree… — a new or existing branch,
a starting point and a folder (by default outside the repository, in <repo>.worktrees/<branch>). Remove worktree…
warns about uncommitted or unpushed work first.
In DevCatz a worktree becomes a site of its own, with its own domain, ports and optionally its own database —
including worktrees that Claude Code, other agents or git worktree add create. That part is explained in
Sites: worktrees.
Pull requests
Pull requests (on GitLab: Merge requests) lists the open ones with their checks — GitHub check runs or GitLab pipelines — and review state.
- Open in browser, or check out a pull request locally.
- New pull request from the current branch: title, base branch, Draft, and a description you can draft with AI.
Pull requests work on all four hosts — GitHub, GitLab, Gitea / Forgejo and Bitbucket — through a connected account.
AI for commits and pull requests
With AI on and its Commit messages and PR descriptions feature switched on, ✦ Write with AI appears next to the commit message and the pull request description.
- It sends the staged diff (for a pull request: the branch’s commits and diff) and your recent commit subjects, so the draft follows the repository’s own style.
- The diff is sent only when you press the button, never in the background.
- Secrets in the diff are masked first (keys, tokens,
KEY=valuelines and more), and Preview what is sent shows the exact text. - The draft lands in the box for you to edit; nothing is committed until you press Commit.
Good to know
- Authentication goes through your own credential helper and SSH keys, or a connected account’s token.
- The site’s Git chip and the Sites table read the repository on disk, so changes made in a terminal or another tool show up at the next refresh.
Last updated 2026-11-01