Inspect and coordinate Git work across a fleet of repositories.
See what needs attention, save bounded changes, synchronize safe remote work, and keep nested-repository drift visible.
Why repos · Quick start · Daily workflow · Safety model · Documentation
A workspace with many Git repositories makes ordinary status, commit, pull,
and push work easy to miss or perform in the wrong place. repos discovers the
fleet, reports actionable state, and applies explicit Git workflows across the
selected repositories.
It does not turn every worktree into one repository. Each repository keeps its own branch, remote, upstream, ignore rules, and commit history.
Requires Rust and Cargo 1.78 or newer. Build from this checkout while keeping Cargo output outside the source tree:
export CARGO_TARGET_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/goobits-repos/target"
cargo build --locked --release
"$CARGO_TARGET_DIR/release/repos" --helpinstall.sh builds and installs the binary into a user or system
binary directory. Review it before use: when Rust is absent it can offer to
install Rust and update shell configuration.
repos status --needs-work
repos save "describe the change" --dry-run
repos save "describe the change"
repos syncThe CLI also exposes focused fetch, pull, push, stage, unstage,
commit, config, audit, doctor, publish, and subrepository workflows.
Use repos <command> --help for exact options.
Status and dry-run paths are the preview surfaces. save stages tracked files
by default; --all explicitly widens that scope to all non-ignored files. It
rejects unresolved conflicts before staging, then commits new work and can push
commits that were already locally ahead. Untracked-only files stay untouched by
the default save without preventing an existing commit from being published.
sync pulls safe remote changes, pushes local commits, and reports nested drift;
a dirty repository is neither pulled nor pushed. Missing remotes, upstreams,
conflicts, dirty state, and failed inspection remain visible rather than being
silently repaired.
Repository discovery does not authorize mutation. Review the selected targets and dry-run output before fleet-wide commands, especially when nested repositories or submodules are present.
- Documentation index
- Getting started
- Installation
- Command guide
- Architecture
- Subrepository management
- Troubleshooting
The project gates formatting, locked Clippy and tests across all targets, features, and doctests, Rust 1.78 compatibility, and the locked dependency set against RustSec advisories and warnings. See AGENTS.md for the local commands. Keep generated Cargo state outside the checkout.
MIT © repos contributors.