github gitbutlerapp/gitbutler release/0.22.1

4 hours ago

Changes

  • macOS: Holding while selecting a project now shows that it will open in a new window
  • Adds "Create PR" and "Land" to the branch context menu, so both actions are available regardless of the "Land branches directly" setting
  • When updates from the target branch conflict with uncommitted work, GitButler now keeps both versions, shows the files as conflicted, and lets you mark them as resolved

Fixes

  • Fixes unexpected vertical scrolling of the workspace while dragging branches between lanes
  • Fixes tracked files being deleted in some workspaces after landing a branch
  • Fixes failed GitHub operations showing a generic response-decoding error instead of GitHub's actual error message
  • Fixes rebase operations unexpectedly moving tags
  • Fixes conflicted commits losing their conflict state when reworded
  • Fixes stale uncommitted files being shown after commits made by the CLI or another process
  • Fixes clean commits being incorrectly treated as conflicted
  • Fixes commit and merge request links using the wrong URL for self-hosted forges reached over SSH on a non-standard port
  • Fixes workspace updates failing after a branch in a stack was squash-merged upstream
  • Fixes "Open in browser" requiring a second click from the branch menu
  • Fixes the diff view failing to highlight commits that uncommitted changes depend on
  • Fixes successful pushes to branches tracking a non-default remote being reported as failures
  • Fixes GitLab projects with many merge requests not showing all of them
  • Fixes some GitHub pull requests getting stuck at "mergeability is unknown", leaving the Merge action disabled
  • Fixes GitHub repositories with more than 100 open pull requests not showing all of them
  • Fixes a branch-not-found error in the branch view after the displayed branch was integrated, landed, or deleted
  • Fixes project-not-found errors that could appear after deleting a project or cancelling project setup

CLI

  • Adds but resolve conflicts and but resolve apply for inspecting and resolving individual conflicts in conflicted commits without checking them out
  • but commit can now target any branch chosen from the picker, including branches lower in a stack
  • but commit, but amend, but move, and but squash now show example commands when arguments are invalid
  • but move <branch> --branch <other-branch> can now stack one branch onto another
  • but now detects the terminal's light or dark theme automatically; BUT_THEME still overrides it
  • Adds c, m, and s as default aliases for but commit, but move, and but squash
  • but pick now supports branch targeting with --branch, --above, and --below
  • but squash and but discard now accept directory paths to select the uncommitted changes within them
  • but discard with no target now discards all uncommitted changes
  • but uncommit <branch> now moves the branch's commits back to uncommitted changes and removes the branch
  • but discard --json and but move --json now include a type field on each result
  • The but push picker now shows one entry per stack and which ancestor branches will also be pushed
  • but branch new now supports --above and --below for positioning branches; --anchor and -a remain deprecated aliases for --above
  • but land now deletes the branch from its push remote after landing succeeds
  • but branch --help now points to but reword for renaming branches
  • Improved the guidance shown to coding agents when the GitButler skill is missing or a CLI update is available
  • DeepSeek Harness (dsh) is now detected as a coding agent, with automatic skill setup
  • but pull now keeps both versions when target-branch updates conflict with uncommitted work; resolve the files with but resolve <path>...
  • but pr new now reports the branch and remote that were actually pushed to
  • but push --json now includes the destination branch name in each branchToRemote entry
  • but unapply now explains how to create a branch when the commits being unapplied are not attached to one
  • but push now exits non-zero when one or more branches in a batch fail to push
  • but reword now preserves conflict state when rewording a conflicted commit
  • but status, but pull, and but commit no longer fail when a clean commit is incorrectly marked as conflicted
  • Fixes but push failing to detect conflicted commits in ancestor branches before pushing
  • Fixes but land and but pull deleting tracked files in some workspaces
  • Fixes but status failing with a "too many IDs" error in repositories with a very large number of untracked files
  • Fixes but pull failing when a branch in a stack was squash-merged upstream

TUI

  • Improved diff rendering performance, especially for uncommitted files
  • You can now switch directly between commit, squash, and move modes in the TUI
  • but tui <ID> can now open directly on a branch, commit, file, or hunk; --diff opens the diff view immediately and replaces the deprecated but diff --tui
  • Improved the TUI graph preview when moving a branch out of a stack
  • You can now uncommit an entire branch in the TUI
  • You can now press p in the TUI to cherry-pick the selected commit
  • The TUI action bar now lists commit before squash when both are available
  • Fixes ANSI color codes appearing in TUI error messages
  • Fixes stale selection marks remaining after closing a commit's file list in the TUI
  • Fixes conflicted commits losing their conflict state when reworded in the TUI

New Contributors

Full Changelog: release/0.22.0...release/0.22.1

Don't miss a new gitbutler release

NewReleases is sending notifications on new releases.