What is Gitty Up?
Gitty Up is a Python CLI tool that automatically discovers and updates all Git repositories in a directory tree with a single command. It eliminates the tedious task of manually pulling updates across multiple projects — never forget to pull again.
Features
- Safety first — skips repos with uncommitted changes, detached HEADs, or missing upstreams; never forces changes or overwrites local work
- Concurrent batch processing — pulls multiple repos simultaneously (default: 3, configurable)
- Smart exclusions — auto-excludes common junk directories (
node_modules,venv,build, etc.) and system clutter (.DS_Store,__pycache__) - Detailed logging — commit details, file changes, and color-coded output (✓ green for success, ↓ cyan for updates, ⊙ yellow for skipped, ✗ red for errors)
- Run history —
--explainflag reveals complete history of previous runs - Dry-run mode — preview what would happen without making any changes
- Depth limiting — control how deep the directory scan goes
Installation
uv tool install gittyup
# or
pip install gittyup
Requires Python 3.13 or later.
Usage
gittyup # Update all repos in current directory
gittyup ~/dev/projects # Target a specific location
gittyup --dry-run --verbose # Preview changes safely
gittyup ~/projects --batch-size 5 # Custom batch size
gittyup --explain # Review detailed history
gittyup --sync # Sequential processing
How It Works
Gitty Up recursively scans a directory tree for Git repositories, checks each one for safety (uncommitted changes, detached HEAD, missing upstream), then performs batch pulls with configurable concurrency. Results are logged with color-coded status indicators and detailed commit information.