| Crates.io | git-workty |
| lib.rs | git-workty |
| version | 0.2.5 |
| created_at | 2026-01-05 10:05:18.362076+00 |
| updated_at | 2026-01-22 00:11:52.42011+00 |
| description | Git worktrees as daily-driver workspaces |
| homepage | https://github.com/binbandit/workty |
| repository | https://github.com/binbandit/workty |
| max_upload_size | |
| id | 2023545 |
| size | 128,940 |
I got mass-context-switching burnout. Every git stash felt like shoving clothes under the bed before guests arrive. WIP commits? "WIP: stuff" cluttering my history. Worktrees fixed it, but the raw commands are clunky.
So I built this. Now I just wnew feat/login, do the work, wcd back to main when someone pings me about a bug, fix it, and wcd right back. No stashing. No mental overhead.
$ git workty
▶ feat/login ● 3 ↑2↓0 ~/.workty/myrepo/feat-login
main ✓ ↑0↓0 ~/src/myrepo
hotfix-auth ● 1 - ~/.workty/myrepo/hotfix-auth
cargo install git-workty
Then add shell integration (so wcd, wnew, wgo actually change your directory):
# zsh
eval "$(git workty init zsh)"
# bash
eval "$(git workty init bash)"
# fish
git workty init fish | source
To generate and install the manpage automatically:
git workty install-man
This will write git-workty.1 to ~/.local/share/man/man1. You may need to add ~/.local/share/man to your MANPATH environment variable if your system doesn't pick it up automatically.
The whole point is to make worktrees feel like browser tabs:
wnew feat/login # new worktree + cd into it
wcd # fuzzy-pick a worktree + cd
wgo main # jump to "main" worktree
git workty # see everything at a glance
git workty clean --merged # tidy up finished work
| Command | What it does |
|---|---|
git workty |
Dashboard showing all worktrees |
git workty new <branch> |
Create worktree (and branch if needed) |
git workty go <name> |
Print path to worktree |
git workty pick |
Fuzzy selector |
git workty rm <name> |
Remove worktree (prompts if dirty) |
git workty clean --merged |
Remove worktrees with merged branches |
git workty pr <num> |
Checkout a GitHub PR (needs gh) |
git workty doctor |
Diagnose issues |
Optional. Lives in .git/workty.toml:
base = "main" # default branch for new worktrees
root = "~/.workty/{repo}-{id}" # where worktrees go
open_cmd = "code" # editor for --open flag
Why not git stash? — Stashes get lost. I've got 47 stashes in one repo right now. No idea what's in them.
Why not WIP commits? — They clutter history and I forget to squash them.
Why not just raw git worktree? — The commands are verbose and I kept forgetting the syntax. This is just a nice wrapper.
Won't delete dirty worktrees unless you --force. Prompts before destructive stuff unless you --yes. Every error tells you what to do next.
MIT or Apache-2.0, your choice.