`gco`: Your Brain Shouldn't Track What Git Already Knows
Split workflows create mental state. After enough context switches, you stop carrying it.
Split workflows create mental state. After enough context switches, you stop carrying it.
I built a git worktree manager because I couldn't find a simple one.
The problem hit me when running multiple AI coding agents at once—one was refactoring accessibility code while I needed to review the current implementation for a bug. Same files, different contexts. I couldn't commit the half-done work, couldn't stash and lose the agent's state, couldn't review without a clean checkout.
Git worktrees solved this, but the syntax was awkward. Branchyard exists and is great if you want VS Code integration and git hooks, but I wanted something I could drop in my dotfiles and understand in 20 minutes.
So I built gwt (git-worktree-utils): • bash, zero dependencies • Source-based, lives in ~/.config • One branch = one directory (keeps the mental model simple) • Built-in cleanup for orphaned directories
Use cases beyond AI agents: • Code review without losing your place • Emergency hotfixes without stashing • Running tests in one branch while coding in another
The pattern works: multiple branches in separate directories beats constant switching. No stashing, IDE state persists, contexts stay separate.
Project: https://github.com/jamesfishwick/git-worktree-utils
Spent an hour reverse-engineering my own Git multi-account setup. 🙃 It turns out that the "hacky" approach—using SSH host aliases with fake hostnames—works better than the "correct" one. Why? Loud failure beats silent failure, and state beats process. Every "just remember to..." is a bug.