v0.18.0
A couple highlights from this release:
-
News for macOS users:
If you installed git-spice from the official Tap
(brew install abhinav/tap/git-spice),
you'll need to switch to the Cask version of the package
as the Formula version is being deprecated.brew uninstall abhinav/tap/git-spice brew install --cask abhinav/tap/git-spice
If you installed git-spice from homebrew-core (
brew install git-spice),
you can ignore this message.For context: Homebrew supports Formulae and Casks.
Formulae are typically built from source.
git-spice's Homebrew Tap previously published git-spice as a Formula,
but it distributed pre-built binaries instead of source code.
We're switching to publishing a Cask to more accurately reflect
what's being distributed. -
git-spice now supports an experimental new command:
gs commit fixup.
It is able to amend any commit in the current branch or any downstack branch.
Thinkgit commit --amend, but fully stack-aware.As the feature is experimental, you must opt into it to access it by running:
git config spice.experiment.commitFixup true # enable for this repository git config --global spice.experiment.commitFixup true # enable globally
If you use it, please feedback and issues about the experimental feature at
https://github.com/abhinav/git-spice/discussions/867. -
We've addressed a long-standing limitation of
gs branch split:
it was previously unable to move the branch being split down to another commit.
Suppose if the branch being split--say 'penguin'--has two commits:
(a) Invent penguins, and (b) Refactor pangolin, and the branch head points to commit (b).
Previously,gs branch splitwould not let you use the name 'penguin' for commit (a),
as it was already attached to commit (b).This limitation has now been resolved: you can now move 'penguin' down to commit (a),
and create a new branch 'pangolin' for commit (b). -
gs log long(gs ll) andgs log short(gs ls) both now support a--jsonflag.
When used, they print all available information as JSON to stdout.
You can consume this output with tools like jq to implement custom automations using information from git-spice.
Added
- branch checkout/delete/onto: Include CR numbers in prompt visualization, and allow searching and filtering by CR identifiers.
- Experimental 'gs branch fixup' command that acts like 'git commit --amend' for any downstack commit. It will commit staged changes to a downstack commit, and automatically rebase the rest of the stack on top of it. See https://abhinav.github.io/git-spice/cli/experiments for instructions on enabling this experimental feature.
- log {long, short}: Add --json flag. This prints information about tracked branches to stdout as a stream of JSON objects.
- log {long, short}: Add -S/--cr-status flag to request the statuses of change requests that have been published.
Changed
- branch split: Allow reusing original branch name for intermediate commits during split.
- Homebrew Tap now publishes the package as a Cask. If you previously installed with
brew install abhinav/tap/git-spice, switch to the cask withbrew install --cask abhinav/tap/git-spice. You can ignore this if you installed from homebrew-core (brew install git-spice). - gitlab: Submit Merge Requests with
remove_source_branch=true. This will delete the source branch when the MR is merged. Opt out of this behavior with thespice.forge.gitlab.removeSourceBranchoption.
Removed
- commit amend: Delete -n flag that was deprecated in favor of --no-edit in v0.10.0 (2025-01-02). If you need a short way to use this flag, try defining a custom shorthand.
Fixed
- repo restack: Autostash dirty changes in the working tree before the operation. Previously, the changes wouldn't be stashed until checking out the first branch, an operation which might fail because of other conflicts.

