Quick start
$ brew tap chmouel/lazyworktree https://github.com/chmouel/lazyworktree
$ brew install lazyworktree --cask
$ cd your-repository
$ lazyworktree
lazyworktree
A TUI for git worktrees
LazyWorktree is a keyboard-first TUI for managing Git worktrees, branches, pull requests, and CI status. Work with isolated worktrees as your default workflow, eliminating the need to switch branches in a single directory. Each task gets its own worktree, keeping tmux or zellij sessions, local files, pull/merge requests, notes, TODO items, and Git state isolated and independent.
Quick start
$ brew tap chmouel/lazyworktree https://github.com/chmouel/lazyworktree
$ brew install lazyworktree --cask
$ cd your-repository
$ lazyworktree
Features
Create, rename, remove, absorb, and prune merged worktrees directly from the keyboard.
Instead of constantly checking out branches in a single directory, you treat worktrees as the true center of your development cycle. Your terminal sessions, local notes, and Git operations remain completely undisturbed and anchored to the specific worktree you're in.
Create from branch, commit, PR/MR, issue, or custom menu item with optional branch automation.
LazyWorktree allows you to instantiate a new environment based on any git reference. Forget manually checking out branches or fetching commits.
Stage, commit, diff, push, sync, and cherry-pick -- all from within the TUI.
You don't need to leave the app to perform your daily git tasks. Enjoy a fast, responsive interface for managing your changes. If you need the extra power you can reach for the `G` key to start the OG of the lazy, [lazygit](https://github.com/jesseduffield/lazygit).
See check status, read logs, open job pages, and restart GitHub Actions runs.
Monitor your continuous integration pipelines directly alongside your code. Never wonder if your tests passed again.
Each worktree can get its own tmux or zellij session, with configurable prefixes.
Supercharge your multitasking. LazyWorktree integrates perfectly with terminal multiplexers to isolate your workspace state.
Run init and terminate hooks via .wt and add custom
command bindings.
Tailor the tool to your exact workflow. Automate setup and teardown tasks for every worktree you create or destroy.
npm install or
go mod download.
Attach markdown notes to any worktree and view them rendered in the info pane.
Keep your context exactly where you need it. Attach a scratchpad to your worktree so you never forget where you left off.
Turn markdown checkbox notes into a grouped Taskboard and toggle progress without leaving the TUI.
Manage your to-do lists within your terminal. Convert simple markdown checkboxes into an interactive taskboard.
- [ ] Task syntax in your worktree notes.
Set options via CLI flags, git config, or a YAML file. Local settings override global ones.
Configure LazyWorktree to behave exactly how you want. Flexible configuration hierarchy ensures the right settings apply.
~/.config/lazyworktree/config.yml.
Install
brew tap chmouel/lazyworktree https://github.com/chmouel/lazyworktree
brew install lazyworktree --cask
yay -S lazyworktree-bin
go install github.com/chmouel/lazyworktree/cmd/lazyworktree@latest
Optional tools: gh or glab for forge data,
and delta for enhanced diffs.
Screenshots
It's open source, installs in seconds, and works with any Git repo that uses worktrees.