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:
# 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 worktreeGitButler 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 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 commitsGUI-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:
| Tool | Worktree Support | Workaround |
|---|---|---|
| GitKraken | Built-in support | Use native worktree features in the GUI |
| GitButler | Virtual branches (worktree-based) | Use virtual branches instead of manual worktrees |
| GitHub Desktop | No direct support | Open worktree dirs as separate repos |
| Sourcetree | No direct support | Add worktree paths as bookmarks |
| Fork | No direct support | Open each worktree as a separate tab |
| Tower | No direct support | Open 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.