A modern, friendly Git CLI — interactive flows, colored graphs and guided
safety rails on top of the real git binary, so SSH, GPG signing, hooks and
your existing git config all keep working exactly as before.
gix log gix status gix sync
◆ history — all branches · newest first
* (HEAD -> main) 3d876eb feat: ship it (2 minutes ago · you)
| * (origin/dev) 1a2b3c4 fix: rounding (5 minutes ago · team)
|/
* c094edc feat: first pass
Git's CLI is intimidating: scary errors, destructive commands, and no visual
context. gix wraps the sharp edges:
- Guided, not opaque — every destructive move shows you exactly what will happen and asks. Nothing is ever applied silently.
- Safety nets everywhere —
gix undobacks up your work before touching anything;gix syncnever runs a blind pull; drops need a double confirm. - One interaction model — arrows and vim keys (
j/k),enterto select,esc/ctrl+ccancels the entire command at any step. Muscle memory works across every command. - Beautiful and script-safe — rounded panels, commit graphs, progress bars in the terminal; clean plain text when piped.
- Zero magic — no AI, no cloud, no daemon. Everything is real
git.
brew install iamdmix/gitfx/gitfx # once the tap is liveOr install with Go:
go install github.com/iamdmix/gitfx@latest
# binary is installed as `gitfx`; alias it:
alias gix=gitfxOr build from source:
git clone https://github.com/iamdmix/gitfx
cd gitfx
go build -o gix .gix setupA powerlevel10k-style guided wizard that takes over the screen and walks through everything once:
- Environment — verifies git (and installs it for you via Homebrew if missing), checks identity, SSH/GPG state
- Identity — name + email, and the scope: global, per-directory (local) or system
- Login — your choice of SSH key (generate → clipboard → GitHub hint), GPG signing (pick or generate a key, enables verified commits), or both
- Alias — keep both
gixandgit, makegixthe default forgit, or pick a custom alias name - Finish — a summary card and the docs: https://gitfx.dharmimkshinde.tech/docs
Bare gix greets you with a spinning wordmark (any key skips it) and shows
a first-run hint until setup is complete.
gix status— a live card: branch, upstream, ahead/behind, staged / modified / untracked / conflicts, stashes — ending with the one best next step for your state.gix add— checkbox picker over every change:spacetoggles,atoggles all,enterstages.gix commit— guided conventional commits (feat/fix/chore…, scope, subject, body) with preview and confirmation.-mskips prompts,-astages tracked changes first.gix sync— fetch → inspect → decide: fast-forward pull, guided rebase-or-merge on divergence, orpush -uto publish. Live progress bars (counting/writing/resolving) parsed from git's own stream.gix stash— visual stash manager: pick a stash, see its stat, then apply / pop / drop with confirmations.
gix log— history as a colored commit graph;-afor all branches,-nto limit. HEAD/branch/tag decorations highlighted, parallel branches color-coded.gix diff—--statsummary in a panel up top, colored diff below,-sfor staged.
gix branch— a readablegit branch -vvtable: ● current, → upstream, ↑↓ tracking, last commit.gix switch— fuzzy-searchable picker over local and remote branches;-ccreates one.
gix undo— pick any recent state from your reflog and jump back. Always creates a backup stash first (including untracked files).gix conflict— walks you through every conflicted file: open in editor, keep ours, keep theirs, or skip. Resolutions get staged.gix doctor— health check card: identity, in-progress operations, conflicts, divergence, remotes — each with the exact fix-it command.
gix setup— the full first-run wizard (environment, identity, login methods, aliases, docs).gix config— set your Git identity interactively with a scope picker.gix keys— SSH setup wizard: detect → generate (ed25519) → copy public key to clipboard → test against GitHub.gix open— open the repo's GitHub/GitLab page in your browser (gix open <branch>opens that branch).
Releases are automated end-to-end and validated locally:
.goreleaser.yaml— buildsgixfor darwin/linux/windows (amd64 + arm64), publishes a GitHub release, and pushes a generated Homebrew cask toiamdmix/homebrew-gitfxon every tag (casks are the current goreleaser v2 path —brews:formulas are deprecated). The cask installs the prebuilt binary and auto-generates shell completions from cobra..github/workflows/release.yml— triggers onpush: tags v*,release: published(tags created via the GitHub UI), and manualworkflow_dispatch.- Secrets:
TAP_GITHUB_TOKEN(fine-grained PAT, Contents R/W on both repos) in Settings → Secrets and variables → Actions.
Validate locally before tagging:
goreleaser check
goreleaser release --snapshot --clean --skip=publish,announceShip a release:
git push origin main
git tag -a vX.Y.Z -m "Release vX.Y.Z" && git push origin vX.Y.ZUsers install with brew install iamdmix/gitfx/gitfx.
Full docs: https://gitfx.dharmimkshinde.tech/docs
Every command degrades to plain, color-free output when piped or run
without a terminal (gix log | cat, CI scripts, cron). Interactive commands
print a plain listing plus the exact non-interactive alternative instead of
failing inside a prompt.
One visual language across the CLI: semantic color tokens (blue = identity,
green = safe, amber = attention, red = destructive), fixed icon meanings
(◆ identity, ✓ ok, ⚠ attention, ✗ conflict, → hint), rounded
panels for report cards, and every next step as a single hint line. Built
with Cobra + Bubbletea + Lipgloss; all git operations shell out to the real
git binary.
-
gix add -p— hunk-level interactive staging -
gix bisect— guided binary search for the bug -
gix release— tag + changelog helper