Hacker News new | ask | show | jobs
by roetlich 15 days ago
Who would have thought that git worktree is the technology of the year 2026?
12 comments

Yeah, when you had multiple agents working on the same machine, branch isolation was no longer sufficient.

A repository folder can only be on one branch at a time.

A worktree is basically equivalent to a cp -R + git branch, which allows this new workflow to occur.

I loved this particular historical insight as to why `git worktree` was added in 2015:

Before worktrees, kernel devs faced a major inconvenience when switching contexts, e.g., stopping feature work to fix an urgent bug on a release branch.

Running git stash and switching branches alters timestamps on thousands of files.

This forces `make` to perform a full re-compile, which can take up to an hour on large kernels.

Sadly worktrees do some stuff with the git folder that's made one development environment we inherited incompatible. Something about the .git folder not being a fully real .git folder maybe
And the team behind opencode is working on an alternative https://github.com/anomalyco/rift
this looks similar to something I built https://github.com/ThatXliner/git-worm
Hah, I have a prototype of the same idea on my backburner! Excited to see this, though I don't understand some of their design choices. Will need to check out more closely.
Gitbutler still a better option than any worktree like variant
What if parallel sessions try to modify the same file?
If same on same line, it will block ask to stack branches
I still don't understand how people use git worktrees with Docker. You need a full database and etc. For me it's simpler to have multiple checkouts.
I don't understand what docker problem would be solved by multiple git directories but not by multiple work trees?

Regardless of whether the former solves it, I was going to suggest you could use compose or whatever in your 'human' tree, and then tell the AI to use equivalent docker commands without using compose, so it gets anonymous/its own named containers, but you keep the convenience.

I use Conductor's spotlight (and a Pi extension I derived from it) but it's not perfect. Once a migration executes, I'm pretty much bound to it but at least once, I have just backed up the database before switching and then restored that.
I use a skill that basically boils down to 'keep track of ongoing work in a json file, create a new numbered clone for each separate thread of work, delete when done'. Worktrees are too opaque and not entirely isolated for my liking.
How small are people’s projects if they find worktrees useful? I use them for hobby stuff, but $DAYJOB is a different story because of testing
I've toyed around with worktrees but haven't found them very useful beyond that. I generally find it much easier to carefully prompt an agent so $TASK1 does not interfere with $TASK2
I tried them a while back and they were more annoying than anything. The only real use-case I have for them is stashing long-running changes that are not ready to be committed... but really probably should be anyways.
I set up multiple work trees in one vscode workspace last year and wrote in the agents.md how to merge branches - but I spend about a third of the time helping agents integrate and merge. I remember wishing the tooling would catch up
I used to create multiple local worktrees and mount the sub directories using Docker. This approach had significant limitations because many paths in the agent and .git files were hard-coded.
I can barely keep up with one single thread and branch, go figure.
i have some fun experiments i'm doing with full virtualization middle ware of all sys calls for agents tools/shell commands/io, still far from daily driver, but allows me to do a very rich overlay / virtual file system tom foolery in place
Worktrees don’t support git submodules and it’s killing me in my monorepo
I have moved from my own awkward scripts to lazyworktree TUI and I loved it
best tool yet!