Chapter one
Read the history.
One commit per row, and a branch that keeps its column from its first commit to its last. Right click to copy the files a commit touched, or select a range and copy the distinct union.
A desktop client built around one idea: lanes that never move. Branches stay in their column so the shape of your history holds still while you read it.
The tour
Stop the total at the last filled row
src/lib/totals.ts, src/lib/table.ts, src/lib/totals.spec.ts
Chapter one
One commit per row, and a branch that keeps its column from its first commit to its last. Right click to copy the files a commit touched, or select a range and copy the distinct union.
Chapter two
Tick the files, write the message, commit. Your hooks run and your signing key is used, because it uses the same Git you already have.
Chapter three
A merge is shown against the branch it landed on, so it reads like any other commit. New files get a preview too.
Chapter four
Paste the names, pick a source and a destination, and every file is checked before anything is written. Nothing is guessed.
Every feature from the first day. The trial starts the first time you open the app.
Payments by Dodo Payments, who send the receipt and your licence key. Refunds
₹149 / month
or $2.99 a month outside India
₹1,490 / year
or $29.99 a year outside India
Straight lanes
Most clients let lanes drift sideways as you scroll, so the picture changes while you are reading it. In Switchyard a branch holds its position from the first commit to the last.
Most clients make you choose between one commit per row and straight branches. Switchyard gives you both.
Every action uses the Git already on your computer, so it behaves exactly as it does in your terminal.
Stage and unstage a file, a folder, a hunk or single lines, or everything at once. Amend the last commit, or undo it and keep the changes. Discarding always asks first and keeps a copy, so Undo puts the file back exactly as it was.
Ahead and behind counts sit on the button, with how long ago you last fetched, and it fetches by itself every 15 minutes. Progress shows as git works, and a download can be stopped. Force push checks the remote first, so you cannot overwrite a colleague's work by accident.
Filter by subject, author or sha as you type, or search all of history: path: for the commits that touched a file or folder, text: for the ones that added or removed some text.
Create, switch, rename, track and delete branches, here or on the remote, from a right click. Switching with changes asks whether to bring them or leave them on the branch for later. Stash, pop and drop without remembering which verb git wants. Star the branches you use most.
Right click a commit for its file list. Select several commits and get the distinct union, one file per line and comma separated, ready to paste into a release note or a ticket.
Conflicted files get a list of their own, each saying what kind of conflict it is. Click one to see the file with each conflict laid out as your side and theirs, and take one side, the other, or both, conflict by conflict, or open the three pane merge editor. Every choice can be undone, and a conflict you settled once is settled the same way when it comes back.
On GitHub, GitLab, Azure DevOps, Bitbucket and Gitea, self-hosted servers included: list, create, review, approve, check out and merge them, read and re-run CI, and work through issues, with a token of your own that is sent only to your service.
Commits, amends, merges, pulls, cherry-picks, resets and discards can be taken back from the message that follows, or with Ctrl+Z. Nothing already pushed is ever undone.
Right click any file for its history, followed through renames, or its blame, where each line leads to the commit that last changed it. Pick any two versions to see what changed between them.
The words that changed are marked inside a changed line, code is coloured by its language, and a changed picture is shown before and after, side by side, as a swipe, as an onion skin, or as just the pixels that changed.
Pick two rows and see every file with what happened to it, without writing a range expression, then swap them round or open any file side by side. Export the files a set of commits changed, with their folders, in one go.
Switchyard's light and dark, VS Code's, GitHub's, Dracula, Nord, Solarized, high contrast and more. Every text stays readable in each, and the history can be read with a screen reader.
New to a repository? See where to start, what changes most, what breaks most, which files change together and who knows each folder. Read from history, no AI, nothing uploaded.
An operation log that undoes older actions too, even after a restart, redo, discards copied to the Recycle Bin, a force push that cannot overwrite unseen work, lost commits found again, a warning before a secret is committed, and a log of every git command.
Pick several files in any list and stage, unstage, discard or commit them together. Copy the files themselves, export them with their folders, or drag them into Explorer or an email.
A console under the panels for each open repository, already in its folder: PowerShell, Command Prompt or Git Bash. Right click any folder to open it there.
Ticket numbers in commit messages open your tracker, and one click shows every commit of a ticket.
Split a commit by file, hunk or line, move lines into another commit, or absorb staged changes into the commits they belong to.
Merged and stale branches are marked, and archived out of the way without changing git. Work and personal accounts on one service, side by side.
Open a repository in a window of its own. Windows on the same repository stay in step, and every window you had open comes back next time.
Your repository's template, reviewers and labels, drafts made ready, auto-merge and merge queues, reviews sent as one, and forks synced without ever forcing.
Finds what slows git down on Windows, from long paths to OneDrive and Defender scanning, says how to fix each, and speeds up a large repository with git's own file watcher.
One box for repositories, branches, commits, files, stashes, pull requests, settings and commands, across every open repository.
Go through what you are about to push, file by file, tick each one and leave yourself notes. Push is ready once everything is ticked.
Search every branch, stash, the reflog and lost commits for text that once existed, and take that version back.
Watch a repository or a folder grow, commit by commit, in a window of its own.
Save every branch, tag, stash and change in one click, and restore it later after seeing exactly what will change.
Name a test command and it runs before each push. A failure holds the push back until you choose otherwise.
After each fetch, see whether your branch would conflict with a teammate's, and in which files.
Turn one large change into tidy commits by module, tests beside their code, and undo it all in one step.
Keep named sets of repositories, such as Work and Side projects, and switch between them in one step, tabs and layout included.
Bring over the repositories you had open in GitHub Desktop, Sourcetree, GitKraken or Fork, or let Switchyard find every repository in your folders.
Change a file right where you read its diff, or in a quick editor with find, replace and go to line.
Jira, YouTrack and Linear issues beside your commits, Bitbucket Data Center, and a check of the branch rules before you push.
Index history for searches in seconds, monorepo mode, background maintenance and health across every repository.
The ones you reach for most. Everything else is a few letters away in the command palette, and any key can be changed in Settings.
Paste a list of file names, pick a source and a destination, and Switchyard works out what is new, what already exists, and what is identical before it writes anything.
src/lib/invoice.model.ts,
src/lib/invoice-api.service.ts,
src/lib/invoice-list.component.ts
Full paths, trailing commas, quotes and Windows backslashes all get tidied up. A bare file name matching two files in the source is reported as ambiguous, never guessed. Nothing is ever written outside the destination folder.
Why Switchyard
It uses the Git you already have installed. Your hooks, your saved sign-in and your signed commits just work, exactly as they do in your terminal.
Each branch keeps its own lane from its first commit to its last, so the shape of your history doesn't jump around while you read it.
Scroll smoothly through 100,000 commits and more. A big repository feels as quick as a small one, and text stays sharp at any display scaling. Shallow and partial clones, company proxies, Git LFS, and fetch or push across many repositories at once.
Your code never leaves your computer. The app only does what it is built to do, and anything that can't be undone asks you first.
Worth reading before you download it, so nothing here surprises you later.
Roadmap
The commit graph, staging, committing, amending, undo, revert, discard, branches, stashes, fetch, pull, safe force push, history search, light and dark themes.
Since the first releasePaste a file list, see what is new, changed or missing, review the diff where it matters, then copy. Nothing is ever written outside the destination folder.
Since the first releaseA banner names the operation that stopped and how many files are left, and conflicted files get a list of their own. Take your side or theirs for a whole file, settle each conflict in the file or in a three pane merge editor, then continue or abort. Every choice can be undone.
Since the first releaseStage or unstage one hunk, or pick single lines in a diff. If the file changed in the meantime, the app says so rather than guessing.
Since the first releaseReorder, reword, squash, fix up or drop commits in one dialog, and cherry pick commits onto your branch.
Since the first releaseSee, create, comment on, approve, check out and merge pull requests on GitHub, GitLab and Azure DevOps. Take back a commit, a merge, a pull, a rewrite or a discard from the message that follows it. A file's history and blame, identities per folder or remote, and team settings for a repository.
Since the first releaseFetch, pull and push show their progress and can be stopped while that is safe. A remote that wants a password or a passphrase asks in the window, and the repository on screen is fetched every 15 minutes so the counts stay true.
Since the first releaseWindows warns on first run because the installer is not code signed, and signing needs a certificate that costs money every year. Updates are already checked to be genuine before they install; a signature would let Windows vouch for them too.
Not yet fundedQuestions
Every copy starts with a 30-day free trial of everything, with no account and no card. After that it is ₹149 a month in India or $2.99 elsewhere, or yearly for two months less. There is one plan, and nothing in the app is held back from it. See pricing.
If a plan ends, the app does not lock you out: it goes read-only, so every repository can still be read, and writes come back the moment it is renewed.
It uses the Git already installed on your computer. That is deliberate: your version, your settings, your hooks, your saved sign-in and your signing key all keep working, and the app always behaves like the Git you use in the terminal.
Only on a computer with no Git at all does it use the copy it brings, Git for Windows' own MinGit, unchanged and under its own licence. Settings says which Git is in use. If your Git is too old, the app says so plainly instead of failing halfway through an operation.
No. Every destructive operation sits behind a confirmation that names what will be lost. Force push checks the remote first, so a push that would discard someone else's commits stops instead of going through.
Reading 1,052 commits from a real monorepo takes 683 ms, almost all of it waiting on git itself. Laying out the branches for those commits takes about 1 ms.
Scrolling stays just as smooth on a history of 150,000 commits as on one of fifty.
Yes. Code signing needs a certificate that costs money every year, and there is no certificate yet. The warning is Windows telling you the truth: the binary is unsigned.
Yes. It checks shortly after it starts and every few hours, downloads a new version in the background and checks that it is genuine. It installs when you press Restart to update, or the next time you quit. The banner offering an update the developer has marked as required cannot be dismissed. The release notes say what changed in each version.
Separately from updates, the developer has a safety switch that can make a faulty version read-only or stop it, so a release that goes wrong cannot keep doing damage while a fix is on its way. The next question says how it works.
Nothing about your code: no repository paths, file names, branch names, email address or machine name. To count installs, it sends a random id it made up the first time it ran, with its version and platform. To know your trial and your plan, it sends a one-way hash of your computer's id, and your licence key when you paste one. The privacy policy lists all of it.
It regularly checks for notices and updates. It also checks a safety switch: if a version turns out to be faulty, the developer can make it read-only or stop it until a fix is installed. Only the developer can use the switch, it lasts a limited time, and it never touches your repositories or files.
Nothing jumps. The app notices the new commits and redraws the graph in one go, so the shape you are looking at always matches your history.
No. Switchyard was written from scratch. Published documentation and algorithm write-ups were read; no other client's source code was. Where a project inspired an idea, the idea was reimplemented rather than copied.
One installer for Windows. Every feature for 30 days, with no account and no card.
Checking for the latest release…
Try it freeWindows 10 and 11. Uses your Git for Windows, or brings one if you have none. The installer is not code signed, so Windows will ask you to confirm on first run.