0.19.3

Latest release 19 February 2026

Linux CLI 🐧

It is now possible to install the GitButler CLI via the installer script at https://gitbutler.com/cli

Changes

  • Improved app performance - the file watcher is now able to completely avoid subscribing to ignored files
  • Adds a menu bar option to open the project in the terminal (under "Project")
  • Exiting edit mode now warns about uncommitted changes
  • Fixes a Linux specific issue with showing files in the file manager
  • Fixes an issue where in some case pushing stacked branches displays an incorrect graph
  • Fixes a bug preventing the creation of branches from a specific commit
  • Fixes a bug where symlinks in the repo mess with the status output
  • Fixes an issue with scrollbars not functioning right in small popups

CLI

  • but status simplified "base" information in the output
  • but status IDs are now bold and no longer underlined
  • but pr new is now more Markdown friendly
  • Improved handling of [Y/n] prompts
  • Fixes an issue where Ctrl/Cmd+C is not handled correctly in interactive prompts

Experience GitButler’s newest features before anyone else. ⋆˚₊ Get Nightly ☽˚.⋆

0.19.2

16 Feb 2026

CLI Changes

  • but status - IDs for uncommitted files are now more stable (not changing between mutations)
  • but pick - It is now possible to select multiple commits to be cherry picked
  • but resolve - Fixes an issue preventing resolving of conflicts
  • but skill install - The interactive mode now offers global install as well
  • but absorb - Fixes an issue where an incorrect file count is shown

0.19.1

8 Feb 2026

Changes

  • Added a settings toggle for previewing only one file at a time (appearance settings)
  • The GitLab integration now supports multiple accounts
  • Fixes an issue where stacked PR footers were not being correctly maintained
  • Fixed scroll jitter and lag when expanding items in diff lists and when scrolling quickly
  • Fixed an issue where newly created branches could be incorrectly associated with stale remote tracking branches

CLI Changes

  • but diff now has a --tui option for interactive diff viewer (set it as default via but config ui)
  • but pr new now checks auth upfront instead after message composition
  • Fixes an issue where but rub treated files with dashes as ranges
  • Most mutations commands like rub, move, amend now have --status-after flag
  • You can now configure GitLab accounts via but config
  • Improved Agents SKILL.md file - update it with but skill check --update

0.19.0

5 Feb 2026

Announcing the GitButler CLI

  • Most GitButler operations are now available via a CLI https://docs.gitbutler.com/cli-overview

Changes

  • Adds an "auto-commit" right click option on uncommitted files
  • It is now possible to drag changes to start a commit
  • Improved diff rendering and layout
  • Fixes an issue (again) with Cmd+A for selecting text in input fields

CLI changes

  • but pick - allows for cherry picking from branches not in the workspace
  • but status - fixes an issue where in some cases PR and CI data was not being shown
  • but rub - improved docs covering all possible combinations
  • but absorb - now has --new flag which will create new commits above the dependency commits
  • but commit - the --file flag was renamed to --message-file and --files was renamed to --changes
  • but branch unapply is now but unapply
  • but branch apply is now but apply

0.18.8

3 Feb 2026

Changes

  • Updated diff view file diff previews are now in a continuous scrollable list rather than a drawer
  • Updated the "assign" terminology to "stage" throughout the app
  • The app now menages a special pre-commit hook to prevent commits outside of GitButler when using the GitButler workspace branch
  • LM Studio support - you can now use LM Studio as a local LLM provider for AI-powered features, in addition to existing Ollama and cloud options
  • The CLI can now authenticate via deeplink URLs, streamlining the login flow when connecting to your GitButler account.

Fixes

  • Cmd/Ctrl+A now correctly selects all text in input fields instead of triggering other shortcuts
  • Fixed duplicate "absorb" item appearing in context menus
  • Fixed auto-scroll regression in virtual lists
  • Fixed dropzone deactivation when dragging files

CLI changes

  • but commit now supports a --files option to commit specific files or hunks by their CLI IDs without staging first.
  • but commit now supports an --ai flag to generate commit messages.
  • but new has been replaced with but commit empty for inserting blank commits with explicit --before or --after flags.
  • but squash now accepts commit ranges, branch names, and comma-separated lists
  • but squash now supports an --ai flag to generate consolidated commit messages
  • but move is a new command for moving commits between positions in a stack, across stacks, or moving individual committed files between commits.
  • but update install command added to update the CLI directly from the command line with optional version selection: but update install [nightly|release|<version>] (MacOS only)
  • but skill install command added to install GitButler CLI documentation for AI coding assistants

0.18.7

23 Jan 2026

Changes

  • Uncommitted changes can now be "absorbed" into the top-most or the commits they have a dependency on. Right click on changes -> "Absorb" will present a summary of operations first.
  • Fixes an issue in reading very old projects resulting in a "ChangeId variant is no longer supported" error
  • Fixes an Windows issue where locked files don't show up as uncommitted in status output

CLI changes

  • but config for setting up various aspects of the app
  • but commit now executes relevant hooks if present and includes a --no-hooks flag

0.18.6

22 Jan 2026

Changes

  • Fixes an error "No matching entry found in secure storage"
  • Updates to the UI padding and styles

CLI Changes

  • but commit with no branches creates a canned branch
  • but push no longer prompts for a branch if there is only one
  • but push will now detect commits in conflicted state and prevent pushing them
  • but absorb now supports --dry-run
  • but setup new command to setup even repos without a remote for GitButler use
  • but init is now removed (replaced by setup)
  • but merge - while in 'no-remote' mode this will merge applied branches into the target
  • but teardown for going back to normal git mod

0.18.5

20 Jan 2026

Changes

  • Fixes a bug with the Claude Code UI in the workspace where agent changes were not being correctly assigned to the respective branch
  • Adds table support in places where markdown is being rendered
  • Creating a branch with invalid characters now normalized the name without error

CLI

  • Operations with but rub, but amend, but uncommit, but squash, but stage will now prompt if there is an ambiguity of the provided identifier (eg. File and branch have the same name)
  • Operations but branch delete, but unapply and but restore now prompt for confirmation (with --force still being available)
  • but pr new no longer prompts for confirming the branch if there is only one branch

0.18.4

19 Jan 2026

Changes

  • Drag-and-drop operations now indicate what the operation would be on hover while dragging
  • Adds drag and drop support for hunks to create a new branch on drop
  • Adds an option for configuring allowed image sources under the CSP config (applicable for self-hosted forges)
  • Ctrl + a now selects all files in lists (similar to Cmd + a on Mac)
  • Amending commits no longer resets author dates (commit dates are still updated, same as git)
  • Improved Gerrit support with including a fallback URL generation the pushing a commit is a noop
  • Renaming a branch to the same name is now a noop instead of an error
  • Adds a new setting under "Appearance" for displaying file names first in the path
  • Improved diff rendering performance
  • Linux: added docs for Linux specific workarounds and fixes in https://github.com/gitbutlerapp/gitbutler/blob/master/LINUX.md

Fixes

  • Fixes a bug causing several operations to error out with "Stack is uninitialised"
  • Fixes a Windows specific issue with poor performance with file watching under WSL
  • Fixes a high CPU usage under Linux
  • Fixes a bug preventing the creation of a branch underneath an existing stack
  • Fixes an issue that was preventing the discarding of binary files
  • Fixes an issue with Cursor hooks under Windows
  • Fixes a GitLab specific issue where the rebase and squash method of merging did not work from the app
  • Fixes a Claude Code UI bug where WebFetch permissions are stored in a wrong format

CLI specific notes

Changed

  • Adds async fetching from remotes as well as forge info (e.g. PRs, CI)
  • Invoking but without arguments is now defaulting to but status (configurable with but alias)
  • Slow operations like pushing and fetching now have progress output
  • Improved but help output
  • but status no longer invokes a pager
  • but status now includes PR and CI information by default
  • but status now displays context-aware hints (disable by aliasing but status --no-hint)
  • but status --upstream now shows upstream commits as well as merge-ability status of branches
  • but status now indicates Git mode and but switch-back reverts the repository to GitButler managed branch (necessary until https://github.com/gitbutlerapp/gitbutler/issues/11866 is done)
  • Fixes an issue where but status --files was assigning duplicate short IDs
  • but commit now supports --file for providing commit message
  • but absorb now provides detailed output of where changes went and why
  • but absorb - fixed an issue where untracked files did not get absorbed correctly
  • but rub now supports short IDs from but diff that can be used for assigning, amending etc
  • but push - if no branch is specified, it now prompts the user
  • but push --dry-run provides a summary of what would be pushed

Renamed / aliased commands

  • but snapshot was moved to but oplog snapshot
  • but review is now but pr
  • but describe is now but reword
  • but base update is now but pull
  • but base check is now but pull --check
  • but fetch is now an alias to but pull --check
  • but uncommit <commit/file-in-commit> is now an alias to the equivalent but rub
  • but amend <file> <commit> is now an alias to the equivalent but rub
  • but stage <file/hunk> <branch/stack> is now an alias to the equivalent but rub
  • but unstage <file/hunk> is now an alias to the equivalent but rub
  • but squash is now an alias to the equivalent but rub with an optional flag for picking a commit message

New commands

  • but diff - a new command for previewing diffs in files changes as well as branches and commits
  • but show displays commit and branch details
  • but alias allows setting up custom aliases (e.g but stfu -> but status --files --upstream)
  • but resolve for resolving merge conflicts
  • but discard removes/drops uncommitted changes
  • but update check check for app updates
  • but update suppress for suppressing app update hints
  • but pr new now includes a commented section with a list of commits and modified files
  • but pull now has more detailed output and has support for the --json flag
  • but reword now has a --format option for fixing the 72 char wrapping of a commit

0.18.3

15 Dec 2025

Changes

  • Adds support for image preview and diffing (split and side-by-side views)
  • Improved commit reordering graphics making the drop zones harder to miss
  • Workspace rules have been redesigned and are now in the bottom left section
  • Workspace rules created by Claude or Cursor hooks are no longer hidden from the list
  • Adds support for the core.hooksPath config when handling pre-push hooks

CLI

  • but describe now takes -m for in-line message
  • but status/rub - the ids are now less likely to run into ambiguity issues
  • but review publish has been simplified (removed TUI)
  • Fixes Windows specific issue with setting up but.exe

Fixes

  • Fixes a GitLab specific bug where creating a MR could fail with an "AbortSignal.timeout is not a function" error
  • Fixes a GitLab issue when switching between projects with different GitLab servers/credentials
  • Fixes a bug where committing a .docx file interrupts file watching
  • Fixes an issue with hard wrapping in the commit input
  • Fixes an issue where a dot in an SSH username is incorrectly encoded when cloning a repo
  • Fixes an issue with Codegen templates incorrectly adding "[object Promise]" in the input field
  • Fixes a rare issue resulting in the workspace failing to load with "ref-names must either be present in the first commit, or be the segment name"