Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Command Reference

Global Flags

These flags can be used with any subcommand and must appear before the subcommand name:

FlagDescription
--terseTerse output — suppress project headers
--statsPrint match count as N/total after count commands
--no-outputSuppress command output (only print project names)
--print-notInvert selection — print repos that do NOT match
--git-verbosePass --verbose to git commands
--git-quietPass --quiet to git commands
--no-sortDo not sort the project list
--glob <PATTERN>Glob pattern for project discovery (default: */*)
--no-globDisable glob — check immediate subdirectories only
--folders <LIST>Comma-separated list of folders to operate on
--no-stopDo not stop on errors — continue to next project
--no-print-no-projectsSuppress the “no projects found” message

Example:

rsmultigit --stats --terse count-dirty       # Just print "3/50"
rsmultigit --no-stop pull                    # Pull all, skip failures
rsmultigit --glob "python-*" status          # Only match python-* dirs
rsmultigit --folders a,b,c list-projects     # Operate on specific folders

Count Commands

These commands test each discovered repo and print matching projects.

rsmultigit count-dirty

Count repositories with dirty working trees (modified, deleted, or staged files). Uses libgit2 for fast native inspection.

rsmultigit count-dirty
rsmultigit --stats count-dirty               # Print count as N/total
rsmultigit --terse --stats count-dirty       # Print only the count line

rsmultigit untracked

Count repositories that have untracked files.

rsmultigit untracked
rsmultigit --stats untracked

rsmultigit synchronized

Count repositories that are not synchronized with their upstream (ahead or behind origin/<branch>).

rsmultigit synchronized
rsmultigit --stats synchronized
rsmultigit --print-not synchronized          # Show repos that ARE synchronized

Status Commands

These commands inspect each repo and print output only for repos that have data.

rsmultigit status

Show git status -s output for repositories that are not clean.

rsmultigit status

rsmultigit dirty

Show git diff --stat output for repositories with modifications.

rsmultigit dirty

rsmultigit list-projects

List all discovered projects.

rsmultigit list-projects

rsmultigit age

Show the age of the last commit for each repo as a human-readable relative date.

rsmultigit age

rsmultigit authors

Show unique commit authors for each repo, sorted by number of commits.

rsmultigit authors

rsmultigit config <KEY>

Show a git config value across all repos. Repos where the key is not set are skipped.

rsmultigit config user.email
rsmultigit config remote.origin.url

rsmultigit size

Show the size of the .git directory for each repo. Useful for finding bloated repos.

rsmultigit size

rsmultigit last-tag

Show the most recent tag for each repo. Repos without tags are skipped.

rsmultigit last-tag

Action Commands

These commands run an action in each project directory.

rsmultigit branch-local

Show local branches for each repo.

rsmultigit branch-local

rsmultigit branch-remote

Show remote branches for each repo.

rsmultigit branch-remote

rsmultigit branch-github

Show the GitHub default branch for each repo (requires gh CLI).

rsmultigit branch-github

rsmultigit pull

Pull the current branch from origin.

rsmultigit pull
rsmultigit pull --quiet

rsmultigit push

Push the current branch to origin.

rsmultigit push

rsmultigit fetch

Fetch from origin without merging.

rsmultigit fetch

rsmultigit stash push

Stash working-tree changes in each repo.

rsmultigit stash push

rsmultigit stash pop

Pop the most recent stash in each repo.

rsmultigit stash pop

rsmultigit reset hard|soft|mixed

Reset HEAD across all repos.

rsmultigit reset hard       # Discard all changes
rsmultigit reset soft       # Keep changes staged
rsmultigit reset mixed      # Unstage changes (default git behavior)

rsmultigit log

Show recent commits for each repo.

rsmultigit log              # Show last 10 commits
rsmultigit log -n 5         # Show last 5 commits

rsmultigit tag local

List local tags for each repo.

rsmultigit tag local

rsmultigit tag remote

List remote tags for each repo.

rsmultigit tag remote

rsmultigit tag has-local

Show repos that have local tags (prints only the project header).

rsmultigit tag has-local

rsmultigit tag has-remote

Show repos that have remote tags (prints only the project header).

rsmultigit tag has-remote

rsmultigit remote

Show remote URLs for each repo.

rsmultigit remote

rsmultigit prune

Prune stale remote-tracking branches (git remote prune origin).

rsmultigit prune

rsmultigit gc

Run git garbage collection on each repo.

rsmultigit gc

rsmultigit checkout <BRANCH>

Checkout a branch across all repos.

rsmultigit checkout main
rsmultigit checkout develop

rsmultigit commit -m <MESSAGE>

Stage all changes and commit across all repos with a shared message.

rsmultigit commit -m "bump version"

rsmultigit submodule-update

Update submodules recursively (git submodule update --init --recursive).

rsmultigit submodule-update

rsmultigit blame <FILE>

Run git blame on a specific file across all repos. Repos where the file does not exist are skipped.

rsmultigit blame README.md
rsmultigit blame Makefile

rsmultigit clean-hard

Hard-clean each repository with git clean -ffxd. Warning: this removes all untracked and ignored files.

rsmultigit clean-hard

rsmultigit diff

Show git diff for each repository.

rsmultigit diff

rsmultigit grep <REGEXP>

Grep across all repositories. Output lines are prefixed with the project name.

rsmultigit grep "TODO"
rsmultigit grep --files "TODO"               # Only show filenames

Build Commands

These commands run build tools in each project directory. Projects with a .disable file are skipped.

rsmultigit build-bootstrap

Run python bootstrap.py in each project.

rsmultigit build-pydmt

Run pydmt build in each project.

rsmultigit build-make

Run make in each project.

rsmultigit build-venv-make

Run make inside the project’s virtualenv (.venv/bin/make).

rsmultigit build-venv-pydmt

Run pydmt build inside the project’s virtualenv.

rsmultigit build-pydmt-build-venv

Run pydmt build_venv in each project.

rsmultigit build-rsconstruct

Run rsconstruct build on projects that have an rsconstruct.toml file. Projects without rsconstruct.toml are skipped.

rsmultigit build-rsconstruct

Utility Commands

rsmultigit version

Print detailed version information including git commit, branch, dirty status, and Rust compiler version.

rsmultigit version

Short version via flag:

rsmultigit --version