Skip to content

Git worktrees

A git worktree lets you check out several branches of one repo into separate folders at the same time. In nodeterm a worktree binds to a group frame on the canvas, so working on a branch in isolation is as simple as putting your nodes in a frame.

The group frame is the binding. When a worktree is bound to a frame, every node you create inside that frame inherits the worktree’s folder as its working directory. That’s the whole idea: an agent per branch is just a group per branch. Put a Claude node in the feature-x frame and it runs in the feature-x worktree; put another in the bugfix frame and it runs there — no manual cd, no crossed wires.

Creation is one step. Choose New worktree… from the pane right-click menu, the command palette (⌘K), or the Source Control panel. nodeterm resolves the repo from your project folder, so you don’t have to type a path.

  • Adopt existing — worktrees that already exist in the repo are listed, so you can bind a frame to one instead of creating a new one.
  • Orphans — a worktree that isn’t bound to any frame shows up in the creation dialog and can be recovered from there.

When you’re done on a branch, Merge folds it back into its base. Merge always confirms first — it changes the base branch’s working tree, so nodeterm never does it silently.

Pushing the result to origin is opt-in and off by default: a push to origin can’t be politely undone, so you have to explicitly turn it on in the merge dialog.

nodeterm is conservative about deleting worktrees:

  • It only deletes worktrees it created. A worktree you merely adopted is unbound by default; deleting its directory is an explicit opt-in that defaults to off, and either way its branch is kept.
  • Ungrouping or deleting a bound frame releases the binding cleanly. The children keep working, and the now-dead working directory is taken off them so nothing later tries to start a terminal in a folder that’s gone.
  • SSH projects aren’t supported in v1. The affordances still appear, but disabled with the reason shown — a silently missing button teaches nothing.
  • The Explorer tree and the ⌘K file index stay scoped to the project folder, so a bound worktree’s files aren’t browsable or searchable from them yet. The worktree’s terminals and editor nodes work fully.