A terminal UI for git-spice — manage stacked branches and PRs without leaving the terminal.
Heavily inspired by lazygit. Built with Bubble Tea.
Work in progress. Expect rough edges. Contributions welcome.
git-spice is excellent for managing stacked branches and PRs, but its CLI workflow requires bouncing between commands. spicygit wraps it in an interactive TUI so you can:
- See your stack — tree view of all tracked and untracked branches
- Stage, commit, amend — without leaving the TUI, with auto-restack
- Split branches — visually mark commits and split into stacked branches
- Submit PRs — inline title editing, draft toggle, single branch or full stack
- Navigate and search — contextual filtering across files, branches, commits, and diffs
brew install MortenHusted/tap/spicygitgo install github.com/MortenHusted/spicygit@latestOr clone and build:
git clone https://github.com/MortenHusted/spicygit.git
cd spicygit
go build -o spicygit .cd your-git-repo
spicygitIf the repo isn't initialized with git-spice yet, spicygit will prompt you.
| Key | Action |
|---|---|
up / down |
Navigate items in current panel |
left / right |
Switch panel in column (Changes / Stack) |
tab |
Switch between left and right columns |
1 / 2 / 3 |
Jump to Changes / Stack / Right panel |
/ |
Search / filter (contextual) |
? |
Help overlay |
q |
Quit |
| Key | Action |
|---|---|
space |
Stage / unstage file |
a |
Stage all |
c |
Commit (inline message, uses gs commit create) |
A |
Amend (inline message, uses gs commit amend) |
D |
Discard file changes |
| Key | Action |
|---|---|
space |
Checkout branch |
n |
New branch (stacked above current) |
R |
Rename branch (inline) / Repo restack (on trunk) |
d |
Delete branch |
r |
Restack branch |
s |
Submit PR (inline title, ctrl+d for draft) |
S |
Submit entire stack |
e |
Edit commits (interactive rebase) |
b |
Split branch on commits |
O |
Move onto different base |
I |
Insert branch mid-stack |
f |
Fold into parent |
Q |
Squash into one commit |
t |
Track with git-spice |
T |
Untrack |
o |
Open PR in browser |
y |
Repo sync (on trunk) |
spicygit calls git-spice and git as external commands — it doesn't import or link against git-spice code. All git-spice operations go through the git-spice CLI binary.
MIT
- git-spice by Abhinav Gupta — the stacked branch engine
- lazygit by Jesse Duffield — UX inspiration
- Bubble Tea and Lipgloss by Charm — TUI framework