Skip to content

release/0.22.0

Latest

Choose a tag to compare

@krlvi krlvi released this 30 Jul 18:17
73b73c2

Changes

Native GitHub Stacked PR Support is available in gitbutler 🥞🎉

  • GitButler now automatically uses GitHub's native stacked pull requests for enrolled repositories, falling back to description footers otherwise
  • You can now choose per project whether GitButler adds stack metadata to pull and merge request descriptions
  • Cherry-picking now creates conflicted commits when a pick conflicts instead of blocking it

CLI

Breaking changes: This release overhauls the commit, amend, squash, discard and move. The commands rub, stage and unstage have been removed. For agentic use its important to update the skill (but skill check --update)

  • The CLI no longer reads change assignments from the desktop app. All worktree changes are treated as uncommitted; but stage, but unstage, and but commit --only have been removed
  • but commit now takes sources positionally and uses -b/--branch for the target branch and --above or --below for stacking
  • but squash still takes sources positionally but now uses -t/--target for the target. It can squash all types of sources into commits, branches, and the uncommitted area.
  • but amend and but uncommit work similarly to but squash
  • but move still takes sources positionally but now uses -t/--target, --above, or --below for the target. It can move commits, committed files, and branches. Use --unstack to unstack a branch
  • but rub has been replaced by but squash
  • but amend and but squash now default to uncommitted changes when you omit the source argument
  • Mutation commands now print concise results with change IDs by default
  • --json is now the standard machine-readable output flag, replacing --format json
  • History-editing commands now refuse to modify commits already merged upstream, with --allow-merged available for deliberate overrides
  • Errors now include recovery guidance for history edits, pull conflicts, cherry-picks, and pull or merge request actions, including newly conflicted commits and operations rejected by commit dependencies

TUI

  • The TUI now has a dedicated squash mode that lets you select the source or target first and squash across multiple branches, replacing rub mode
  • The TUI can now open files and hunks in configured external programs, with multi-file selection, user-defined macOS apps, and per-extension defaults
  • The TUI can now discard multiple branches at once
  • The TUI now supports --remember-selection, restoring the previous selection when reopened
  • TUI diffs now use Catppuccin syntax highlighting
  • Fixes tab indentation in TUI diffs

Fixes

  • Fixes web links for self-hosted forges that use a custom port
  • Fixes an issue where failed cherry-picks could fail silently
  • Fixes merge handling so adjacent edits to the same file are detected as conflicts, matching Git's behavior
  • Bitbucket: Fixes an issue where pull requests created through GitButler omitted default reviewers

Full Changelog: release/0.21.2...release/0.22.0

Downloads

Download bins from https://gitbutler.com/