Worktree Management

Git worktrees let you work on multiple branches at once. Git Canopy makes them visual.

Table of contents

  1. Understanding lanes
  2. Create a worktree
    1. New branch
    2. Existing branch
  3. Stage and commit changes
    1. Staging files
    2. Committing
  4. Move files between worktrees
  5. Move commits
  6. Push and pull
    1. Push
    2. Pull
    3. Set upstream
  7. Organize your workspace
    1. Hide worktrees
    2. Collapse worktrees
    3. Change colors
  8. 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

  1. Select New branch
  2. Enter a branch name
  3. Choose the base branch to branch from
  4. Click Create

Git Canopy creates the worktree in a sibling directory to your main worktree.

Existing branch

  1. Select Existing branch
  2. Choose a branch from the list
  3. 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

  1. Stage the files you want to commit
  2. Enter a commit message (or click the sparkles to generate one with AI)
  3. 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:

  1. Select one or more files in the Changes section
  2. Drag them to another worktree lane
  3. 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:

  1. Select commits in the History section of a lane
  2. Drag them to another worktree lane
  3. 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”:

  1. Click Set Upstream in the lane footer
  2. Git Canopy pushes and sets the tracking branch

Organize your workspace

Hide worktrees

To temporarily hide a worktree:

  1. Right-click the lane header
  2. Select Hide

Hidden worktrees don’t appear in the workspace but still exist on disk.

To unhide:

  1. Click the View menu
  2. 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:

  1. Right-click the lane header
  2. Select Delete Worktree
  3. Choose whether to also delete the branch
  4. 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

Back to top

Git Canopy — A Git worktree manager for macOS

This site uses Just the Docs, a documentation theme for Jekyll.