Worktrees without the ceremony.
TL;DR:
wtcreates a worktree for each task, moves you into it, and merges or ships it back to trunk when you are done.
$ wt create blue-button
$EDITOR .
$ wt ship █
rebased blue-button onto main
merged blue-button into main
removed blue-button
pushed main
Latest release: 0.4
brew install mikker/tap/wt
Enable directory switching in zsh:
echo 'eval "$(wt shellenv zsh)"' >> ~/.zshrc
exec zsh
For Bash, add eval "$(wt shellenv bash)" to ~/.bashrc instead.
The shell integration also completes commands and current worktree names for
wt switch, wt s, and wt rm.
Then create a worktree from any Git repository:
wt create my-change
Worktrees live inside the main checkout at .wt/worktrees/<name> by default.
They are ephemeral: wt done merges locally and removes the worktree; wt
ship also syncs and pushes.
Using Fut?
wtworks well with Fut, the persistent, agent-aware terminal multiplexer.wtcreates and manages the Git worktrees; Fut recognizes linked worktrees as peer workspaces in the same project session, keeping each task’s terminals and agents together.