git-workty 0.1.2

Git worktrees as daily-driver workspaces
git-workty-0.1.2 is not a library.
Visit the last successful build: git-workty-0.3.3

git-workty

Git worktrees as daily-driver workspaces.

workty turns Git worktrees into instant, safe context switching—no stashing, no WIP commits. Create a task workspace in one command, jump between tasks with shell integration, and keep your repo tidy with safe cleanup.

30-Second Demo

# See all your workspaces
git workty

# Create a new workspace for a feature
git workty new feat/login

# With shell integration, cd into it directly
wnew feat/login    # creates and cd's
wcd                # fuzzy pick and cd

# See dashboard
git workty
# ▶ feat/login       ● 3   ↑2↓0   ~/.workty/myrepo/feat-login
#   main             ✓     ↑0↓0   ~/src/myrepo

# Jump to another workspace
wgo main           # or: cd "$(git workty go main)"

# Clean up merged branches
git workty clean --merged

Installation

From source

cargo install --path .

Shell Integration

Add to your shell config (.zshrc, .bashrc, config.fish):

# Zsh
eval "$(git workty init zsh)"

# Bash
eval "$(git workty init bash)"

# Fish
git workty init fish | source

This provides:

  • wcd - fuzzy select and cd to a worktree
  • wnew <name> - create new worktree and cd into it
  • wgo <name> - go to a worktree by name

Commands

git workty / git workty list

Dashboard of all worktrees.

▶ main              ✓     ↑0↓0   ~/src/repo
  feat/login        ● 3   ↑2↓0   ~/.workty/repo/feat-login
  pr-512            ✓     -      ~/.workty/repo/pr-512
  • marks current worktree
  • with count shows uncommitted changes
  • means clean
  • ↑↓ shows commits ahead/behind upstream

Options:

  • --json - machine-readable output
  • --ascii - ASCII-only symbols
  • --no-color - disable colors

git workty new <name>

Create a new workspace.

git workty new feat/login           # new branch from base
git workty new hotfix --from main   # specify base
git workty new feature --print-path # print path only (for scripts)
git workty new feature --open       # open in editor

git workty go <name>

Print path to a worktree (for cd).

cd "$(git workty go feat/login)"

git workty pick

Interactive fuzzy selector.

cd "$(git workty pick)"

git workty rm <name>

Remove a workspace.

git workty rm feat/login              # prompts if dirty
git workty rm feat/login --force      # remove even if dirty
git workty rm feat/login --delete-branch  # also delete branch

git workty clean

Remove merged/stale worktrees.

git workty clean --merged --dry-run  # preview
git workty clean --merged --yes      # no prompt

git workty pr <number>

Create workspace for a GitHub PR (requires gh CLI).

git workty pr 123
cd "$(git workty pr 456 --print-path)"

git workty doctor

Diagnose common issues.

git workty completions <shell>

Generate shell completions.

git workty completions zsh > _git-workty

Configuration

Config is stored in $(git rev-parse --git-common-dir)/workty.toml:

version = 1

# Base branch for new workspaces and merge detection
base = "main"

# Root directory for workspaces
# {repo} = repository name, {id} = unique repo identifier
root = "~/.workty/{repo}-{id}"

# Layout style: "flat" (default)
layout = "flat"

# Editor command for --open flag
open_cmd = "code"

Safety

  • Never destroys work by default - dirty worktrees require --force
  • Prompts for destructive operations - unless --yes is passed
  • Clear error messages - always tells you what to do next

License

Licensed under either of

at your option.