Releases: gitbutlerapp/gitbutler
Release list
release/0.21.1
Changes
- Adds Bitbucket Cloud as a first-class forge — create, update, merge, and track pull requests with CI status, right in the app
- The header project selector now groups projects by recency
- You can now find a pull request in the branches list by branch name or number
- Commit details now show the change ID next to the commit SHA
- C/C++ header files now show the correct language icon
TUI
- The details view is now actionable — mark, discard, commit, and move changes right from it, including individual hunks and committed files
- You can now search within the help view
- Press
yto copy a commit's change ID - You can now manually reload from the details view
- Fixes an issue where commands run from command mode did not execute in the active project's directory
CLI
- Adds Bitbucket Cloud support to
but— create, update, and merge pull requests, plus CI check status but statusand mutation commands (commit,reword, and more) now identify commits by their change ID — GitButler's stable ID that survives rebases — rather than the commit SHAbutnow auto-detects more AI coding agents (including Pi and Poolside) and tailors its output for them by defaultbut pull,but resolve, andbut statusnow walk you through resolving conflicts, listing each conflicted commit and how to fix itbut commitnow explains failures caused by conflicting commit dependencies, naming the branch that owns them- Adds
but config push-remote [remote]to view or set the fork remote your branches push to, independent of the target branch but uncommitcan now uncommit files from multiple commits or branches in one operationbut absorbnow errors on an invalid source instead of silently absorbing all changes- Fixes an issue where
but commitin a linked Git worktree suggested GitButler setup instead of reporting that linked worktrees are unsupported - New branches now appear at the top of the branch list instead of the bottom
Fixes
- Fixes an issue where dismissing the update banner stopped it from reappearing on a manual update check
- Fixes an issue where conflicted (unmerged) files in the working directory could cause operations to fail
- Fixes an issue where unapplying a stack could show a spurious "branch not found" error and leave the branch showing in the workspace
- Fixes an issue where undoing a commit deletion could fail when an uncommitted change touched the same file
- Fixes an issue where a repeated branch name in a stack could show a phantom "(no commits)" branch head
- Fixes a Windows-specific issue with handling deep links
New Contributors
- @arthurzam made their first contribution in #14465
- @sidfishus made their first contribution in #14633
- @reneleonhardt made their first contribution in #14796
Full Changelog: release/0.21.0...release/0.21.1
Downloads
Download bins from https://gitbutler.com/
release/0.21.0
Support for "push to main" / "skip the pull request" workflows
You can now land a branch straight onto its target eg. origin/main, without ever opening a pull/merge request.
In the desktop app this is enabled in the project settings (Git stuff) or during project setup. In the CLI this is done with but land <branch>.
Changes
- Added a feature for resolving conflicted commits with AI (right click option) if AI is enabled for the project
- You can now apply to the workspace GitLab merge requests, including merge requests from forks
Fixes
- Fixes an issue where undoing a change could leave spurious uncommitted changes behind
- Fixes an issue where stacking one branch onto another could fail with an "Invalid parent delimitation"
- Fixes an issue where the upstream integration modal could break while branch data was being refreshed
- You can now scroll the list of steps in the upstream integration modal
- Fixes a GitHub-specific issue where pull requests from forks could use the wrong SSH URL
- Fixes an issue where a checkout could remove a directory when a file was expected in its place
CLI
but land <branch>lands an applied branch directly onto its target, skipping the pull requestbut mergehas been removed —but land <branch> --yesnow covers itbut commitandbut amendnow report which branch and commit each rejected change depends onbut resolve <commit>now has an--aiflag for auto-resolving conflicted commits
TUI
- Significantly improved performance with navigating large diffs
- The detail view now shows diff stats
- Arrow keys now work the same as
hjkl - Commit details now show the change ID
- Adds a jump mode for quickly moving around the interface
Full Changelog: release/0.20.4...release/0.21.0
Downloads
Download bins from https://gitbutler.com/
release/0.20.4
Agentic Use
There is now a new command but agent setup which makes the overall setup easier. It is an interactive wizard for tuning version control behavior (similar to https://docs.gitbutler.com/ai-agents/tuning-agent-behavior but easier to setup). Running this is a good idea for best performance.
- Multi-committing, amending and splitting of commits now complete quicker and use less tokens
- Improved PR stacking workflows
Changes
- There is now a "Font size" setting for the diff views (Settings → Appearance)
CLI
but amendnow accepts--changesto amend specific changes into a commit- You can now provide a message when creating an empty commit with
but commit but uncommitnow supports a diff output option to print the resulting changesbut statusnow shows stacked branches that have been merged upstream- Hunk IDs are now stable across commits and discards
but completionsnow appears in the help output, making it discoverable when you grab thebutbinary without an installerbutoutput now labels "unassigned changes" as "uncommitted"- Fixes a bug where
but applycould report success while leaving a branch unapplied when workspace metadata was stale - Removed the
but markandbut unmarkcommands - Improved error messages when
stdinisn't a terminal
TUI
- You can now reorder stacks in the TUI
- You can now apply branches from the TUI
- You can now move multiple commits at once in the TUI
- You can now commit above or below the selected commit in the TUI
- You can now copy more things in the TUI — commit details, diff hunks, branch names and more — with
shift+y - Improved scroll keybindings:
j/k/arrows move by line,ctrl+d/ctrl+ujump by 10 lines, andshift+j/shift+kjump by section - Unapplying a branch and undoing no longer prompt for confirmation in the TUI, since both can be undone
Fixes
- Fixes a bug where moving empty branches did not work correctly
- Fixes a bug where commit-message and branch-name generation failed for non-OpenAI providers (Anthropic, Ollama, and others)
- Fixes an issue where commit signing failed when
gpg.ssh.programpointed at a path containing a tilde (~) - Fixes an issue where being offline produced repeated error toasts from background pull-request polling
- Fixes an issue where updating the workspace was not handling squash-merge integrated branches properly
New Contributors
- @ameyypawar made their first contribution in #14245
- @tobeycodes made their first contribution in #14348
Full Changelog: release/0.20.3...release/0.20.4
Downloads
Download bins from https://gitbutler.com/
release/0.20.3
Changes
- Fixes a bug causing an "there is no default target commit" error
Full Changelog: release/0.20.2...release/0.20.3
Downloads
Download bins from https://gitbutler.com/
release/0.20.2
Changes
- Fixes a regression from 0.20.1 where in some cases fetching from the remote could error out
Full Changelog: release/0.20.1...release/0.20.2
Downloads
Download bins from https://gitbutler.com/
release/0.20.1
Changes
- Changes made from outside the app, such as from the
butCLI, now appear in the desktop app automatically without a manual refresh - Adds an "Uncommit changes" option to the committed hunk context menu
- Adds Antigravity as a selectable editor for "Open in Editor"
- Redesigned how upstream changes are integrated into a branch: a new update button in the branch list opens a redesigned modal that shows how your branch has diverged from its remote, lets you choose an integration strategy, and previews the result before you apply it
Fixes
- Fixes a bug where GitHub OAuth failures showed a "missing field" error instead of the actual error response from GitHub
- Fixes an issue where a new branch created on top of pushed commits was incorrectly styled as already pushed; branch styling now follows the branch's own push status
- Fixes the stacked-PR footer "part X of N" count so it matches each PR's position badge
- Fixes an issue where edit-mode refs (
gitbutler/edit) were left behind after leaving edit mode - Fixes an issue where "Open in Editor" failed to open the project in Zed
CLI
--jsonhas been replaced by--format json- Adds
but branch updateto integrate a branch's upstream changes, with selectable strategies (built-in templates or custom steps) - Fixes some Codex specific issues causing the tool to underperform compared to Claude Code
butnow warns when an agent's skill files are stale and refreshes them automatically- Fixes a bug where
but applyreported success and exited 0 even when the branch was left unapplied due to conflicts; it now fails with a clear error - Fixes a bug where
but rub zz commitdid not amend all changes - Fixes a bug where
but branch showcould not find branches that were not at the head of a stack - Fixes a bug where the cache directory was never created, so
butnever stored its update-check result - Improved the error message when creating a branch whose path prefix collides with an existing branch
TUI
- You can now mark multiple uncommitted files in the TUI and commit or discard them together
- You can now move multiple uncommitted files at once in the TUI
- Improved the labels shown when moving branches in the TUI
New Contributors
- @matas-zanevicius made their first contribution in #14149
- @AasheeshLikePanner made their first contribution in #14114
- @sergeykuzmich made their first contribution in #14180
- @allenthich made their first contribution in #14231
Full Changelog: release/0.20.0...release/0.20.1
Downloads
Download bins from https://gitbutler.com/
release/0.20.0
GitButler for AI agents
GitButler can now be used directly by your coding agent via the but CLI and the agent skill.
Multiple agent session can use the but CLI to work in parallel or stacked, branch & commit, clean up history etc.
Check the AI Agents docs for how to set it up and tune the behavior to your liking.
Changes
- Removed in-app GUI for Claude Code (superseded by the
butskill & workflow for agentic use) - Fixes a bug with in-app deep links
- Fixes a Gerrit specific bug with push destination output
- Improved the performance and reliability of commit squashing
- Fixes a bug where branch creation fails with "Branch cannot be created: target commit already belongs to another branch"
- It is now possible to discard commits that are in a conflicted state
CLI
- The 'theme' of the CLI can now be set via the
BUT_THEMEenvironment variable (dark/light) - Improved error handling and display on bad user input
- Significant performance improvements for
but branch [list] - Fixes a bug where global flags did not work with aliases
but branch newnow validates the provided name and fails instead of normalizing itbut reword <branch>now validates the provided name and fails instead of normalizing itbut gui <path>replacesbut .for opening a directory in the GUIbut gui -n <path>allows opening the GUI in a new windowbut unapplyno longer prompts for confirmationbut oplog restoreno longer prompts for confirmationbut branch deleteno longer prompts for confirmation
TUI
- It is now easier to create a new branch from unassigned files
- Adds the ability to discard multiple commits at once
- You can now delete non-empty branches
- You can now copy the content of diffs with Shift+C
- Fixes a bug where moved files could not be committed
New Contributors
Full Changelog: release/0.19.13...release/0.20.0
Downloads
Download bins from https://gitbutler.com/
release/0.19.13
Changes & Fixes
- Fixes a Windows-specific regression from 0.19.12 where the app was not being correctly signed, causing friction with Windows Defender
- Fixes an issue where undoing a new branch creation with the operations log was not working.
- Adds an option to set ptyxis as the default terminal
TUI
- Adds the ability to directly commit into a new branch (bound to
b)
CLI
- Fixes an issue where
but commit empty --jsonwould not print anything.
New Contributors
- @Andrej730 made their first contribution in #13852
Full Changelog: release/0.19.12...release/0.19.13
Downloads
Download bins from https://gitbutler.com/
release/0.19.12
What's Changed
- Fixes a bug where the app can unexpectedly navigate to the "Configure your workspace" view
Full Changelog: release/0.19.11...release/0.19.12
Downloads
Download bins from https://gitbutler.com/
release/0.19.11
Fixes
- Fixes a regression from 0.19.10 where updating the workspace would fail with "Branches are all up to date" error
- Fixes an issue where the AI commit message generation was disabled desptie being enabled in the settings
- Fixes an issue with stacked PRs where after pushing structural changes the PR base remained stale
- Fixes an issue where failing to unapply a branch would leave the UI in a stuck state
- Fixes a Windows-specific issue with "Open in Editor" when running the app from WSL
- The app now correctly handles shallow clones
- Fixes the "but-graph inconsistent with the commit graph" issue when performing actions in the app
- Fixes an issue where creating a branch with a "#" symbol would have the hashtag filtered out
CLI
- Repeated "undo" operations now work as expected (undoing further back in history)
but reword --jsonnow correctly produces the relevant JSON outputbut redo- new command for re-apply undone operationsbut oplog listnow displays more useful descriptions of past operationsbut teardownnow supports--checkout-tooverride to specify the branch to checkout
TUI
- The TUI now updates on filesystem changes
- Repeated "undo" operations now work as expected (undoing further back in history)
- Added "redo" operation to re-apply undone operations
- Fixes a navigation bug while in move mode
New Contributors
- @robertmonka made their first contribution in #13738
- @edgarcnp made their first contribution in #13794
Full Changelog: release/0.19.10...release/0.19.11
Downloads
Download bins from https://gitbutler.com/