Use a Git GUI on repos over SSH
Open a repository that lives on a dev box, a build server or a Linux workstation, and stage, commit, rebase and browse history from your Mac as if the folder were local. Git runs on the other machine, as you; nothing is cloned and nothing is synced.
What you need
- Mergepond Pro. Repositories over SSH are one of the three Pro features; the open sheet tells you if your licence does not cover it, with a link to enter a key.
- An SSH login to the other machine that already works from Terminal. Mergepond runs your system
ssh, so everything in~/.ssh/configapplies: keys,ssh-agent,ProxyJumpthrough a bastion,known_hosts. - Git installed on that machine. If it is not, Mergepond says "Git isn't installed on dev-box. Install it there and try again."
Mergepond does not ask for a password. If the connection needs one, add a key with ssh-copy-id first, or set up the host in your SSH config so ssh dev-box works without typing.
Open a repository on another machine
- Press ⌘O. Under the path field, "Hosts from ~/.ssh/config" lists every host you have configured, with a dot for the ones already connected.
- Type
host:path, for exampledev-box:~/src/infra. A relative path is taken from your home folder there, sodev-box:src/inframeans the same thing. The hint under the field confirms "Opens ~/src/infra on dev-box, connecting over SSH as you." - Press ⏎. The button reads "Connecting…" and then "Opening…". The first connection to a host takes a few seconds longer; see the next section for why.
- The repository opens like any other. History, Changes and Worktrees all work; the sidebar gains a "Remote hosts" section with the host and its state.
You can also pick a host from the list and Mergepond fills in the host: part for you. If ~/.ssh/config is empty, the sheet says so and tells you to type user@host:path instead. An ssh://user@host/path URL is accepted too.
What happens on the host
On the first connection, and again after you update Mergepond, it copies a small helper, pond-agent, to ~/.mergepond/agent/ on the host. The sheet says as much: "On first connect Mergepond copies pond-agent to the host. It runs Git there as your SSH user and opens no ports."
pond-agent runs your machine's Git with your Git config and your credentials, talks to Mergepond over the SSH session's own stdin and stdout, and exits when you disconnect. There is no daemon, no listening port and no copy of your code anywhere but the host. It also watches the repository folder, so changes you make in an editor over SSH, or an agent running there, show up in Mergepond without a refresh.
Mergepond picks the right build for the host from uname; Linux and macOS on x86_64 and ARM are covered.
Work as usual
Everything you do runs on the host.
- Stage, commit and push use the host's Git and the host's credentials, so a push that works in an SSH session there works here.
- ⌘N creates a worktree in a folder on the host, and the setup recipe runs there, through your login shell on that machine.
- ⌘⌥T, Open in Terminal, opens a Terminal window on your Mac that runs
ssh -t dev-box 'cd ~/src/infra && exec $SHELL -l', so you land in the right folder on the right machine. - Show in Finder has nothing to show for a remote repository. Mergepond says so: "That folder is on dev-box, so Finder can't show it. Open it in Terminal instead."
Disconnect and reconnect
Right-click a host in the sidebar's "Remote hosts" section for "Open a repository on dev-box…" and "Disconnect". Disconnecting closes the SSH session and ends pond-agent there; a toast confirms "Disconnected from dev-box." Opening a repository on the host again reconnects. A dropped network connection shows the same way: the host reads "Not connected" until the next action reconnects it.
Get more from it
- Put the host in a workspace of its own with an "SSH host" rule, and give it a colour. Every repository you open on
dev-boxthen lands in that window with that edge colour, so you always know which machine you are committing on. See Workspaces, windows and Git identities. - Recent repositories remember the host, so ⌘P reopens
dev-box:~/src/infraas quickly as a local folder. - Run your coding agents on the host, in worktrees you create from Mergepond, and keep the board on your Mac. Run coding agents in parallel is the same on a remote repository.
- If a host is slow to connect, check
ssh dev-box truein Terminal first; Mergepond uses the same configuration, so a fix there is a fix here.