Skip to content

Releases: gitbutlerapp/gitbutler

release/0.21.0

Choose a tag to compare

@krlvi krlvi released this 06 Jul 16:12
dec80b6

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 request
  • but merge has been removed — but land <branch> --yes now covers it
  • but commit and but amend now report which branch and commit each rejected change depends on
  • but resolve <commit> now has an --ai flag 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

Choose a tag to compare

@krlvi krlvi released this 26 Jun 15:21
b197142

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 amend now accepts --changes to amend specific changes into a commit
  • You can now provide a message when creating an empty commit with but commit
  • but uncommit now supports a diff output option to print the resulting changes
  • but status now shows stacked branches that have been merged upstream
  • Hunk IDs are now stable across commits and discards
  • but completions now appears in the help output, making it discoverable when you grab the but binary without an installer
  • but output now labels "unassigned changes" as "uncommitted"
  • Fixes a bug where but apply could report success while leaving a branch unapplied when workspace metadata was stale
  • Removed the but mark and but unmark commands
  • Improved error messages when stdin isn'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+u jump by 10 lines, and shift+j/shift+k jump 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.program pointed 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

Full Changelog: release/0.20.3...release/0.20.4

Downloads

Download bins from https://gitbutler.com/

release/0.20.3

Choose a tag to compare

@krlvi krlvi released this 19 Jun 17:36
3b28dc5

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

Choose a tag to compare

@krlvi krlvi released this 19 Jun 08:27
33140ab

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

Choose a tag to compare

@krlvi krlvi released this 19 Jun 08:26
ca00ff2

Changes

  • Changes made from outside the app, such as from the but CLI, 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

  • --json has been replaced by --format json
  • Adds but branch update to 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
  • but now warns when an agent's skill files are stale and refreshes them automatically
  • Fixes a bug where but apply reported 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 commit did not amend all changes
  • Fixes a bug where but branch show could not find branches that were not at the head of a stack
  • Fixes a bug where the cache directory was never created, so but never 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

Full Changelog: release/0.20.0...release/0.20.1

Downloads

Download bins from https://gitbutler.com/

release/0.20.0

Choose a tag to compare

@krlvi krlvi released this 03 Jun 10:28
98b4072

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 but skill & 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_THEME environment 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 new now validates the provided name and fails instead of normalizing it
  • but reword <branch> now validates the provided name and fails instead of normalizing it
  • but gui <path> replaces but . for opening a directory in the GUI
  • but gui -n <path> allows opening the GUI in a new window
  • but unapply no longer prompts for confirmation
  • but oplog restore no longer prompts for confirmation
  • but branch delete no 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

Choose a tag to compare

@krlvi krlvi released this 19 May 14:34
bcc96af

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 --json would not print anything.

New Contributors

Full Changelog: release/0.19.12...release/0.19.13

Downloads

Download bins from https://gitbutler.com/

release/0.19.12

Choose a tag to compare

@krlvi krlvi released this 15 May 22:01
fb5240e

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

Choose a tag to compare

@krlvi krlvi released this 15 May 12:08
30b4b21

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 --json now correctly produces the relevant JSON output
  • but redo - new command for re-apply undone operations
  • but oplog list now displays more useful descriptions of past operations
  • but teardown now supports --checkout-to override 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

Full Changelog: release/0.19.10...release/0.19.11

Downloads

Download bins from https://gitbutler.com/

release/0.19.10

Choose a tag to compare

@krlvi krlvi released this 08 May 10:50
23d8af3

Security

This and the last few releases include important security fixes. Please update to 0.19.9 or newer.

Changes

  • Applying of branches no longer performs an unnecessary rebase
  • Adds support for multi-commit selection and operations (e.g. move, squash etc)
  • Adds support for SHA-256 repositories
  • Amending of commits now shows a modal if there were rejected changes (e.g. due to conflicts)
  • Removes the "split branch" options from the UI (it will be back, better)

Fixes

  • Fixes an issue where typing a commit message could cause the cursor to jump to the start of the line
  • Fixes an issue with parsing of certain git config files
  • Fixes a bug where unapplying a branch could cause uncommitted changes to appear as untracked changes
  • Fixes a bug where in some cases amending a commit could cause uncommitted deletions to disappear
  • Fixes an issue with updating the workspace resulting in an error "The new head names do not match the current heads"
  • Fixes an issue where the app would fail if the remote has a branch named "head"
  • Fixes a bug where after deleting a project an error "Asynchronous operation failed" would appear

TUI

  • Adds a help modal with an overview of key binds (press ? in the TUI)
  • Added experimental light theme (set EXPERIMENTAL_BUT_LIGHT_THEME=1)
  • Adds support for operating on multiple commits at once (e.g. move, squash etc)
  • Adds an "undo" action for undoing the last operation (press u)
  • When squashing multiple commits you can now choose how to combine the commit messages
  • Improved "back" behavior when pressing Esc
  • Fixes a bug where the file list was auto-closing after performing a rub action

CLI

  • Improved color consistency (e.g. but diff / show / commit etc)
  • but move now supports moving multiple commits at once
  • but apply now resolves short branch names
  • but absorb now removes --new (it will be back, better)
  • but mcp no longer has the --internal flag
  • but push --run-hooks is now replaced with --no-hooks for disabling
  • but undo now correctly restores to the latest snapshot
  • but branch move has been removed in favor of but move
  • removed the implicit "rub" action (e.g. running but <id> <id> as an equivalent to but rub <id> <id>)
  • fixes an issue where but discard could fail on multi-hunk changes
  • fixes an issue where but discard could fail to discard renaming of files
  • fixes an issue where but rub to amend a file could fail to restore a previously deleted file

New Contributors

Full Changelog: release/0.19.9...release/0.19.10

Downloads

Download bins from https://gitbutler.com/