Worktree Management
Git worktrees let you work on multiple branches at once. Git Canopy makes them visual.
Table of contents
- Understanding lanes
- Create a worktree
- Stage and commit changes
- Move files between worktrees
- Move commits
- Push and pull
- Organize your workspace
- Delete a worktree
Understanding lanes
Git Canopy displays each worktree as a lane - a vertical card showing:
- Branch name and path
- File changes (staged and unstaged)
- Commit form
- Commit history
- Push/pull status
Lanes are arranged horizontally, letting you see and work on multiple branches side by side.
Each lane has a color indicator for visual distinction. Colors are assigned automatically and persist across sessions.
Create a worktree
Click the + button in the toolbar to create a new worktree.
New branch
- Select New branch
- Enter a branch name
- Choose the base branch to branch from
- Click Create
Git Canopy creates the worktree in a sibling directory to your main worktree.
Existing branch
- Select Existing branch
- Choose a branch from the list
- Click Create
This checks out an existing branch into a new worktree directory.
Stage and commit changes
Staging files
In the Changes section of a worktree lane:
- Click the checkbox next to a file to stage/unstage it
- Click “Stage All” to stage all changed files
- Right-click a file for more options (stage, unstage, discard)
Staged files appear with a filled checkbox. Unstaged files have an empty checkbox.
Committing
- Stage the files you want to commit
- Enter a commit message (or click the sparkles to generate one with AI)
- Click Commit
The commit is created in that worktree’s branch only.
Move files between worktrees
Drag files from one lane to another to move changes:
- Select one or more files in the Changes section
- Drag them to another worktree lane
- Drop on the Changes area
Git Canopy handles the git operations:
- Unstages the file from the source
- Discards changes in the source (for modified files)
- Stages the file in the target
Moving files discards changes from the source worktree. Make sure you want to move, not copy.
Move commits
Drag commits between worktrees to cherry-pick them:
- Select commits in the History section of a lane
- Drag them to another worktree lane
- Drop on the History area
The commits are cherry-picked into the target branch in chronological order.
Merge commits cannot be dragged. Only regular commits can be moved.
Push and pull
The lane footer shows your sync status with the remote:
- ↑ 3 means 3 commits to push
- ↓ 2 means 2 commits to pull
Push
Click Push to push your commits to the remote. If your branch doesn’t have an upstream, Git Canopy sets one automatically.
Pull
Click Pull to fetch and merge remote changes. By default, Git Canopy uses rebase to keep your history clean.
Set upstream
If you see “No upstream branch”:
- Click Set Upstream in the lane footer
- Git Canopy pushes and sets the tracking branch
Organize your workspace
Hide worktrees
To temporarily hide a worktree:
- Right-click the lane header
- Select Hide
Hidden worktrees don’t appear in the workspace but still exist on disk.
To unhide:
- Click the View menu
- Select the hidden worktree to show it again
Collapse worktrees
Click the chevron on a lane header to collapse it to just the header bar. This saves space while keeping the worktree visible.
Change colors
Right-click a lane header and select a new color to change the lane’s color indicator.
Delete a worktree
To remove a worktree:
- Right-click the lane header
- Select Delete Worktree
- Choose whether to also delete the branch
- Confirm
Deleting a worktree removes the directory from disk. Make sure you’ve committed or pushed any changes you want to keep.
Git Canopy offers smart defaults:
- If the branch is merged, it suggests deleting the branch too
- If the remote branch is deleted, it indicates this in the confirmation