// features
Every feature, in one place.
The whole catalog, grouped and scannable.
Diffs & staging
- Unified & split diffs, syntax-highlighted in ~190 languages
- Line, hunk & file staging — drag the line numbers or use a keybind; one drag picks up added and removed lines together in unified or split view, with Shift to take one side
- Stage or discard part of a brand-new, untracked file
- Image diffing & collapsible surrounding context
- Raw ⇄ Preview toggle on markdown & MDX diffs — read the change as rendered prose
- Filter the changes list by path or category
- Flat list ⇄ compacted directory tree in the Changes panel — collapsible folders, keyboard-first
- Per-file added/deleted line counts on the changes list
- Commit with co-authors suggested from history; amend, undo, revert
- Pop the commit box out into a dialog — a roomier editor with your staged files alongside
- Recoverable, recycle-bin discards
Branches & history
- Branch compare — ahead/behind, three-dot diff, jump to PR, commit menu + tags
- Update a branch from its upstream — no checkout needed
- Push or publish a branch to any remote — no checkout needed
- Start a branch from any base — another local branch or a remote ref
- Check out or delete remote-only branches from the switcher
- Archive branches — hide from the switcher without deleting
- Clean up branches in bulk — archive or delete stale ones in one sweep, including branches merged through a pull request
- Paged, filterable commit history with rich detail
- File history & line blame
- Commit-author avatars in history
- Unpushed commits flagged in history
Rewrite & recovery
- Interactive rebase — reword / squash / fixup / edit / drop / reorder, atomic replay
- Change base — replay only a branch's own commits onto a new base
- Cherry-pick commits onto the current or another branch
- Merge preview — fast-forward / already up to date / clean / which files conflict, before you merge
- In-app conflict editor — current / incoming / both, or mark files resolved as they stand on disk
- Stash browser
- Stash and reapply — one click when a pull, merge, rebase, update or switch is blocked
- Recover lost work — git fsck for orphaned stashes, restored non-destructively
- Operation journal — records risky ops & recovers if one is interrupted
Pull requests & review
- PRs on GitHub, GitLab & Bitbucket + private, offline local PRs
- Local PRs follow a branch renamed in GitDesktop
- Local-PR merges pre-show conflicts, resolved in an isolated worktree
- See when a pull request won't merge cleanly — and resolve the conflicts in-app, in an isolated worktree
- A blocked merge names why — unmet checks & required approvals (GitHub), the blocking reason (GitLab)
- Set labels & assignees when you open a PR/MR (GitHub & GitLab)
- A PR you're opening holds its place in its list — title, branches & draft state, then its number
- A failed PR create raises a notification — branch and reason named, even when it fails in the background
- Link related issues as you open or edit a PR — auto-detected from your branch and commits (GitHub & GitLab; Bitbucket via linked Jira)
- Request reviewers on a PR/MR (GitHub, GitLab & Bitbucket)
- Inline review comments — reply, resolve, apply suggestions locally
- Compose a review from the diff — batch drafts, submit with a verdict
- Drill into a PR's commits — per-file diffs, whole-commit & line comments
- PR activity feed — reviews, comments, grouped commits, stale-approval marks, all timestamped
- Comment on commits from History — whole-commit or line-anchored
- Fork · Upstream lens — browse & work a fork's PRs and issues or the parent's
- Fork PR maintainer actions — approve blocked workflow runs, update the branch, and push follow-ups to the contributor's fork
- Stacked PRs — position badges and a stack navigator; create, extend, or dissolve a stack from the PR view; on GitHub, merge a stack bottom-up in one go
- Retarget a pull request's base branch from the edit dialog — on GitHub, GitLab, and Bitbucket
- Unfinished-review notice — a review you started on GitHub surfaces on the PR, to finish or discard
- Triage the PR list — All | Mine | Needs review presets and whole-repo filters (GitHub & GitLab), with grouping by your review state (GitHub)
- Refresh the PR list on demand — one press re-reads the list, its checks, conflict chips & review grouping
Forges & trackers
- GitHub, GitLab & Bitbucket — first-class, each on its own identity
- GitHub Enterprise — same features, via gh
- Self-managed GitLab — any host glab is signed in to
- Multiple accounts, switch the active one per host
- Sign in & reconnect in-app — session-expired detection & token-expiry warnings, rate limits told apart (with GitHub's reset time), plus scope hints that reconnect with the needed scope
- Repo switcher — forge logo & visibility badge per row, grouped by owner
- Jira Cloud — link a project, browse & work issues in-app
- Jira keys in branches, commits & PRs link back to the Issues tab
Issues & discussions
- GitHub & GitLab issues, plus private local to-dos
- Refresh the issue list on demand — forge, local & linked-Jira lists in one press
- Code TODOs — scan TODO/FIXME/HACK comments, jump to blame, promote to an issue
- Issue types, sub-issues & dependencies on GitHub; related issues on GitLab
- Issue list filters — All | Mine, plus author & label across the whole repository (GitHub & GitLab)
- Issue activity timeline — labels, assignees, milestones, renames, linked PRs, mentions & state changes, with actor avatars
- GitHub Discussions — read, post & react
- Close or reopen with a comment — on PRs, issues & discussions, your draft posts alongside
Projects
- Project boards — GitHub Projects as a kanban, table or roadmap, with saved views and keyboard reordering
- Project board columns — from Status or any single-select field, or by iteration for a sprint board
- Project card order — reorder cards within a column from the keyboard, saved as the project's own order GitHub shows everyone
- Project cards & drafts — add issues, PRs or Markdown drafts, edit a draft or convert it to an issue & peek at issue and PR cards with Space
- Project card actions — move, archive, restore or remove a card from its menu or many at once, and set fields across a selection in one go
- Project tables — a saved table view's columns, sort & foldable row groups, with field values edited right in their cells
- Project roadmaps — item bars on a month, quarter or year axis marking today, the current iteration & milestones, with dates you nudge from the keyboard
- Project status updates — the latest status, note & target date above the board, the history newest-first, and post, edit or delete your own updates
- Project & view management — create, edit, close, reopen or delete projects; add, rename, duplicate or delete saved views
- GitHub Projects — link issues & PRs to repo and owner projects
- Project field values — read & set Status, Priority, Iteration & dates on issues and PRs, plus organization issue fields on issues
CI, tags & releases
- GitHub Actions — runs, jobs, steps, re-run, cancel & dispatch
- GitLab & Bitbucket pipelines — runs, job logs, re-run, cancel & trigger, in-app
- CI checks rollup — pass/fail/pending/skipped, live step progress on running Actions checks, one-click re-run of failed or cancelled runs, plus single failed jobs (GitHub & GitLab; fork-sourced MRs link out)
- Tags, releases & cross-platform assets — edit notes (GitHub & GitLab), sync the updater manifest (GitHub)
- Insights graphs — commit activity, churn & more, computed locally
- Fork activity — a repo's recently active forks, with ahead/behind on GitHub
- Findings tab — GitHub Dependabot/scanning alerts & advisories; GitLab SAST, secrets & code quality; Bitbucket Code Insights
Repository & workspace
- Clone, add local, create (README/.gitignore/license) or fork
- Explore repositories — search GitHub, GitLab & Bitbucket, then clone, fork or star
- My work — one cross-repo inbox of your open GitHub PRs and issues, GitLab MRs and issues, and Bitbucket PRs
- Update a fork from its upstream — fetch, then fast-forward or merge
- Detach from a fork — remove the upstream remote from the repository menu, palette, or settings; leave the fork network on GitHub, GitLab, or Bitbucket (in-app on GitLab)
- Publish a local repo to GitHub, GitLab or Bitbucket — choose the GitHub owner or Bitbucket workspace
- Locate a moved repo — repoint the entry and bring its local PRs, issues, review history & automations along
- Worktree manager — create, switch, rename, lock, promote & remove, with a last-active time per worktree
- Open a branch's worktree from its row in the branch list, with the worktree actions on the branch's context menu
- Submodule manager — add, remove, update & track branches, edit URLs, open as repo
- Tasks — register a repo script or write one inline and run it in an interactive terminal, kept to one repository or available in all
- Manage tracked & ignored files
- --force-with-lease + --force-if-includes (Git 2.30+) by default
- Push menu for a branch tracking a differently named branch — push to it, or publish under its own name
- Rewrite-aware divergence — a server-rebased branch gets a confirmed Reset to origin/…
- Fork-point guard — a rebase pull asks before an upstream rewrite drops your commits
- Auto-fetch — quiet background sync, never auto-pulls
- Activity & notifications inbox — never miss a finished review or check
- Per-source notification controls — in-app vs OS channels, failures-only CI, per-repo overrides
- Environment & CLI health check
- Native macOS menu bar — File menu with Open Recent
- Remembers window size & position
- Narrow windows & split-screen layouts — down to 640px, with a collapsible sidebar and diff file list
- Themes — System, Light, Dark & a softer Slate
Admin & settings
- Repo settings & webhooks (admin)
- Collaborators & invitations (admin)
- Branch rulesets — create, edit, enable/disable (admin)
- Code security & analysis toggles (admin)
- Danger zone — rename, archive, visibility, transfer, delete (admin)
- GitHub Pages — source, custom domain, HTTPS (admin)
- Actions/Dependabot/Codespaces secrets & variables (admin)
- Edit the Sponsor button (.github/FUNDING.yml)
- Branch-protection rules, locally
- Promotion branches — update offers withheld on their PRs and branch menus
- Git hooks manager — husky / pre-commit / lefthook aware
- Edit git config — identity, default branch, line endings
Keyboard & Markdown
- Command palette + rebindable, filterable keys — down to a single key
- Arrow-key navigation on every list
- Generated shortcut cheat sheet
- GitHub-Desktop-compatible defaults
- Markdown editor — formatting toolbar & live preview
- Collapsible comment box — reclaim reading space, actions stay docked
- Jump to either end of a long thread — scroll-aware buttons on PR, issue & discussion conversations
- @mention & #reference autocomplete, plus !123 on GitLab — GitHub & GitLab comments, replies, release notes, local PRs & issues
- Reference autolinks — #123, @user, and GitLab's !123 open the issue, pull request, or profile they name
- Reference preview cards — hover or Tab to a #123 or !123 for its state, title & author, or to an @user for their avatar & handle
- Link previews — hover or Tab to a link for its domain & full URL, plus the page's title, description & image
- Fullscreen image viewer — screenshots in any rendered body and both sides of an image diff, with fit/100% zoom and arrow-key stepping in fit view
✦ AI · generate & review
- Generated commit messages, PR & issue titles/descriptions
- AI branch names — from your in-progress changes, or the branch's own committed work
- AI suggests PR/MR labels from your repo's existing set
- AI issue drafting from your repo's templates
- AI repo descriptions & topics
- Generate a task's script from plain English — or analyze one to document it
- AI code review & security audit on any PR
- Hand review context to the AI reviewer — per-branch notes deposited by your agent, read by every review (automated or one you start) with a per-run opt-out
- Agentic review — reads the full diff, files, search & history, read-only
- Reviews keep running in the background & finish in the tray
- Queue the other review mode while one streams — runs it next
- Review effort — dial the reviewer's reasoning from a light pass to Max
- Review timeout — agentic reviews get 20 minutes, or pin your own limit
- AI ignore patterns — .gitignore syntax, keeping chosen files out of generation and review
- AI excluded files view — every hidden file with the rule that hid it, a warning on a ! line that decides nothing, and rule removal in place
- Iterative reviews build on the last round & other bots' findings
- Re-reviews remember the discussion — triage replies honored, context sized to your model
- Reviews converge — a fuller first round, non-blocking leftovers listed apart
- Every re-review ends with a verdict — blocking issues remain, or merge when ready
- Reviews know where your docs live — one finding names every stale surface
- AI reviews are clearly machine-authored — post as a GitLab project bot
- Automations — review or audit on commit, PR open, or new commits, with notifications for everything or failures only
- Automation history — a per-repo log of what ran, what was skipped & why, plus run an automation on demand
- Resolve merge conflicts with AI — review the proposal, then accept
- Debug failed CI with AI — logs to a root-cause & fix
✦ AI · agents & sessions
- Delegate a task to a Claude, Codex, Copilot or opencode agent — searchable model picker (live opencode, Codex and Copilot catalogs), any typed id accepted
- Default agent — pin one, or follow a CLI-agent AI provider
- Watch the agent work step by step, with an inline diff per edit
- Best-of-N — run one task across agents/models, keep the best
- Run agents in a Docker/Podman sandbox (opt-in), per session or by default
- Add per-repo tools to the agent container via a custom image
- Integrated terminal in each session (host & container)
- Research a topic with web search — Brainstorm & Deep research, cited
- Plan a task into an agent-ready issue (read-only)
- Hand an issue or plan to an agent to implement
- Agent sessions — tabs, search & completion alerts
- Slash commands & skills in the agent composer
✦ AI · MCP & providers
- Use GitDesktop as an MCP server — read-only default, opt-in write ladder
- Trigger GitDesktop's AI generation from an external MCP client
- Bring your own MCP servers, opted in per session
- Browse the official MCP registry to add servers
- Bring your own model — Anthropic, OpenAI, Google AI Studio, OpenRouter, Ollama, or a keyless agent CLI (generation & review)
- Google AI Studio as a first-class provider — paste an AI Studio key and pick from your live Gemini catalog
- Point AI at a custom or LAN Ollama / OpenAI-compatible server
- Keys live in your OS keychain; one switch hides every AI surface
That's a lot to keep open all day.
Free, open source, and local — for GitHub, GitLab, and Bitbucket.