Keep your repos
Members stay ordinary Git repos — own remotes, own branches, own history. Gnit never rewrites them. Walk away and you still have plain Git.
Commit, pin, and check out one change across independent repos — and teach your agents to do the same. Why? Because submodules suck.
You have a change that touches three repos. With submodules that means: commit each child, remember to bump the parent pointer, commit the parent, push in the right order or publish a dangling reference, and pray nobody is on a detached HEAD.
With Gnit:
gnit add -A
gnit land -m "Ship the new field"
gnit pushOne Change-Id ties the commits together. One Pin records the exact state. The repos stay independent — Gnit just stops making you do the bookkeeping by hand.
git submodules go home— scrawled on the wall of every monorepo migration.
Honest about the trade: against a submodule expert the keystroke win is modest. The durable win is the footguns Gnit deletes — push ordering, detached-HEAD commit loss, gitlink bumps — and grouping that shows up in gnit change log instead of living in your head.
The tools that tried to fix multi-repo before — meta, Gitslave, mu-repo — died of the same disease: every collaborator had to adopt them or the workflow fell apart. Agents change that math. An agent harness reads AGENTS.md, installs a skill once, and then reliably follows the workflow on every invocation — no onboarding, no forgetting, no "I just used plain git, sorry."
Gnit leans into it: the skill is bundled in the binary, gnit skills install --all teaches every harness on the machine, and the workspace guidance block makes any agent that lands in the repo discover the workflow on its own. Humans get the same commands; nobody is forced to adopt anything. See Gnit for agent harnesses.