GitWorktree.org logoGitWorktree.org

Git Worktree in GitKraken & GitButler

GUI Git clients approach git worktree support differently. GitKraken, one of the most popular Git GUIs, has added worktree features over time. GitButler takes a different approach entirely, using worktrees internally to power its "virtual branches" concept. This guide covers the current state of worktree support in both tools and suggests alternatives for GUI-oriented developers.

GitKraken Worktree Support

GitKraken has added git worktree support to its interface. You can create and manage worktrees directly from the GitKraken GUI, making it one of the few visual Git clients with built-in worktree features.

Creating Worktrees in GitKraken

To create a worktree in GitKraken, right-click on a branch in the left panel and select "Create worktree". GitKraken will prompt you for the directory path where the new worktree should be created. The tool runs git worktree add under the hood.

Managing Worktrees

GitKraken shows linked worktrees in its interface, allowing you to see which branches are checked out in separate worktrees. You can open a worktree in a new GitKraken tab or window for full repository browsing within that worktree context.

Using GitKraken with Worktrees Created Externally

If you create worktrees from the command line, GitKraken detects them when you open the repository. You can open the worktree directory in GitKraken like any other repo:

Opening CLI-created worktrees in GitKraken
# Create a worktree from the terminal
git worktree add ../feature-dashboard feature/dashboard

# Open it in GitKraken
# File > Open Repo > navigate to ../feature-dashboard
# GitKraken recognizes it as a linked worktree

GitButler and Virtual Branches

GitButler is an open-source Git client that takes a fundamentally different approach to parallel work. Instead of asking you to manage worktrees manually, GitButler introduces virtual branches — a concept built on top of git worktrees that lets you work on multiple branches simultaneously in a single working directory.

How GitButler Uses Worktrees Internally

Under the hood, GitButler uses git's worktree machinery to maintain its internal state. When you create virtual branches in GitButler, it manages the file assignments and change tracking behind the scenes. Your uncommitted changes can be split across multiple virtual branches, each destined for a different real Git branch when you are ready to commit.

The key differences from manual worktree usage:

  • Single directory: You work in one directory rather than switching between separate worktree folders
  • File-level granularity: Individual files (or even hunks) are assigned to different virtual branches
  • Automatic conflict avoidance: GitButler prevents you from assigning the same file to two virtual branches
  • Push to real branches: Virtual branches become real Git branches when you push, creating proper commits
GitButler virtual branches concept
# GitButler workflow (conceptual — managed through the GUI):

# 1. Open your project in GitButler
# 2. Create virtual branches for different tasks:
#    - "feature/sidebar" (assigned: sidebar.tsx, sidebar.css)
#    - "fix/header-bug" (assigned: header.tsx)
# 3. Edit files normally — GitButler tracks which branch each change belongs to
# 4. Push each virtual branch independently
# 5. Each becomes a real Git branch with clean commits

GUI-Based Worktree Management

If you prefer working with a GUI, here are practical approaches for managing worktrees visually:

GitKraken + Terminal Combo

Use GitKraken for visualization and history browsing, but create worktrees from the built-in terminal or GitKraken's worktree UI. Open each worktree as a separate tab in GitKraken for side-by-side branch comparison.

VS Code + GitKraken Together

A popular combination: use VS Code for editing (one window per worktree) and GitKraken for visualizing the commit graph across all branches. Both tools recognize worktrees and show the correct state.

Lazygit as a GUI Alternative

If you find full GUI clients too heavy, Lazygit offers the best terminal-based worktree management with a visual interface. It has a dedicated Worktrees tab with keyboard shortcuts for every operation.

Alternatives for GUI Users

If your preferred Git GUI does not support worktrees natively, here are workarounds:

ToolWorktree SupportWorkaround
GitKrakenBuilt-in supportUse native worktree features in the GUI
GitButlerVirtual branches (worktree-based)Use virtual branches instead of manual worktrees
GitHub DesktopNo direct supportOpen worktree dirs as separate repos
SourcetreeNo direct supportAdd worktree paths as bookmarks
ForkNo direct supportOpen each worktree as a separate tab
TowerNo direct supportOpen worktree directories as repositories

For any GUI tool without native worktree support, the general pattern is the same: create worktrees from the command line, then open each worktree directory in the GUI as if it were a standalone repository. The GUI will detect the Git metadata and work correctly. See our git worktree add tutorial for command-line worktree creation.