Features
Managed Git — Cloning Repos and Worktrees
Last updated: 2026-09-17
Managed Git, part 1 of 2.
→ Part 2 of 2: Managed Git — Publishing and Reviewing Changes
RepoGo can put a GitHub repository onto any environment for you — your Android device, a paired Mac, a machine you run the RepoGo host on yourself, or a Cloud Sandbox — without you ever opening a terminal. We call these managed checkouts: RepoGo clones them, tracks them, lists them, and removes them on request.
You get to a managed checkout from the environment picker: choose an environment, tap Clone Repo, pick a GitHub account, a repository, and a branch, then choose Clone or New Worktree.
Clone vs. worktree#
Both give you a working copy of the repo. The difference is how many you can have and what branch they sit on.
| Clone | Worktree | |
|---|---|---|
| What it is | One folder per repo and branch | An extra, isolated working copy of the same repo |
| Branch | The branch you picked | A new branch created off the branch you picked |
| Repeat use | Cloning the same repo + branch again reuses the existing folder | Every worktree you create is brand new |
| Disk cost | A full copy each time | Shares history on Mac, server, and cloud hosts; Android currently stores a full isolated clone |
| Best for | Your normal day-to-day copy of a project | Running several agents on the same repo at once, without them stepping on each other |
Pick Clone when you just want the project on the machine. Cloning acme/web on main gives you one folder; asking again later doesn't re-download it — RepoGo fetches and updates the folder you already have.
Pick New Worktree when something is already in progress and you want a second, independent copy. Say an agent is mid-task on main and you want to try a different approach: a worktree gives you a separate folder on its own fresh branch (main-a91c4f), so both can run at the same time with no conflicts. Mac, server, and cloud hosts share the Git history; Android currently downloads a full isolated copy.
Git will not let the same branch be checked out twice, which is why each worktree gets its own new branch instead of the one you picked. That's also what lets you create several worktrees from the same base branch.
Where the folders go#
RepoGo keeps managed checkouts in its own predictable place, separate from anything you cloned yourself. Mac, server, and cloud hosts use the three-tree layout below. Android keeps the same repos/<owner>/<repo>/<branch> and worktrees/<owner>/<repo>/<branch>-<id> shape inside app-private storage, without a shared bare/ tree.
Three separate trees:
| Tree | What's in it | Layout |
|---|---|---|
repos/ | Your clones | repos/<owner>/<repo>/<branch> |
worktrees/ | Your worktrees | worktrees/<owner>/<repo>/<branch>-<id> |
bare/ | Shared repo history that backs the worktrees — no files to edit, don't work in here | bare/<owner>/<repo>.git |
Keeping clones and worktrees in different trees is deliberate: a clone of acme/web@main and a worktree off main never collide, and either can be removed without disturbing the other.
On a paired Mac, or a machine you run the host on#
Everything lives under a plain, visible repogo folder in your home directory:
~/repogo/repos/acme/web/main ← clone of acme/web on main
~/repogo/repos/acme/web/feature%2Flogin ← clone of the feature/login branch
~/repogo/worktrees/acme/web/main-a91c4f ← worktree, on its own new branch
~/repogo/bare/acme/web.git ← shared history behind the worktreesTwo details worth knowing:
- Branch names with slashes are escaped in the folder name. A branch named
feature/loginbecomes the folderfeature%2Flogin, so a branch never turns into nested directories. The branch inside the checkout is the realfeature/login. ~/repogois not the same as~/.repogo. The hidden~/.repogofolder is RepoGo's own state — its settings and internal database. Your code is only ever in the visible~/repogo.
If you run the host yourself, you can point these somewhere else with the REPOGO_REPOS_DIR, REPOGO_WORKTREES_DIR, and REPOGO_BARE_DIR environment variables before starting it.
On a Cloud Sandbox#
A Cloud Sandbox keeps clones on its persistent disk:
/vercel/sandbox/repos/acme/web/mainSame <owner>/<repo>/<branch> layout, same rules. Everything there is saved when the sandbox sleeps and restored when it wakes, so you clone once and it's still there days later.
The sandbox also has a /vercel/sandbox/internal folder — that's RepoGo's own host software, not yours. Leave it alone.
The temporary sandbox that spins up for a single task when you open a GitHub repo works differently: it's pinned to one repo at
/vercel/sandbox/projectfor the life of that task, and isn't a managed checkout you clone into or remove.
On your phone#
Repositories stored on the phone itself aren't folders you browse outside RepoGo — they're kept inside the app's own storage. Android uses real JGit checkouts there, so clone, branch, diff, pull, commit, and push operate on the same workspace contract as every other host. An Android New Worktree is an independent clone on a fresh branch rather than a linked Git worktree, so it uses more storage. iPhone on-device repositories use RepoGo's internal workspace store instead of filesystem checkouts.
Repos you cloned yourself#
Managed checkouts are an option, not a requirement. On a Mac you can also use Pick Folder in the environment picker to open a repository that's already on your machine, wherever it lives. RepoGo works against it exactly the same way — it just doesn't manage its lifecycle, so it won't appear under Repos or Worktrees and can't be removed from the app.
Next steps#
- Publishing a folder, reviewing changes, credentials, and removing checkouts: Part 2.
- Working in the cloud? See Cloud Sandboxes.