git-city¶
git city¶
The branch-workflow commands Git forgot.
Start features, keep a whole stack in sync, and land your work — as a handful of boring, guessable commands. Rebase-first, forge-agnostic, and every command previews with --dry-run and reverses with undo.
The whole daily rhythm:
git city new add-login # branch off an up-to-date trunk
# ...hack, commit...
git city sync # main moved on? rebase add-login onto it
git city land # fast-forward main, push, clean up
See where you are at any time:
$ git city info
git-city · my-project
trunk: main
remote: origin
on ● add-login (feature, parent: main)
working tree: clean
vs main: ↑2 ↓0
stack:
main (trunk)
└─ ● add-login ↑2 ↓0
Why git-city¶
-
Forge-agnostic
No pull-request host required. Every command works on a plain Git remote — or no remote at all.
-
Rebase-first
Branches and stacks stay linear.
syncrebases onto the parent with--force-with-lease, so it never clobbers unseen remote work. -
Bulletproof undo
Every command is a list of reversible steps.
git city undoreverses the last one — and refuses rather than destroy your work. -
Two ideas, not seven
Just
trunkandfeaturebranches, each knowing its parent. That is the whole mental model.
Stacks, first-class¶
Build a branch on top of another, then sync the whole stack in one command — parents before children.
Status: early
The local workflow — branches, stacks, sync, land, undo — is complete and heavily tested. Forge integration (pull/merge requests, patch series) is intentionally not built yet; git-city works fully with a plain Git remote, or none. See the roadmap.