Gitty Up

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--explain flag 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.