Practical storage guide

Disk cleanup for developers: builds, caches, and Git worktrees

Measure development storage by ownership and Git evidence. NullDisk separates rebuildable output, worktrees worth reviewing, and data that should be kept.

Where the space goes

Generated output

Dependencies, compiler output, and tool caches can be large. Recreating them may require downloads or a working build environment.

Working copies

A quiet worktree can still contain uncommitted work, ignored files, or commits that exist nowhere else.

Containers and models

Docker volumes, VM images, and local models can contain valuable application state; size alone cannot classify them.

A practical cleanup workflow

STEP 1

Open Development Cleanup

Use the Mac app’s Development action or run nulldisk dev ~/src. Start with folders you control; use SSH development cleanup when the files live on a server.

STEP 2

Read the categories

Review Can be rebuilt, Worktrees to review, and Keep for now. Partial or unknown Git evidence is not permission to remove a working copy.

STEP 3

Verify backups and stop active work

Check current local history and optionally verify Git backups on remotes. Stop builds and agents using the selected folders. A pushed branch does not back up ignored or uncommitted files.

STEP 4

Review the exact action

Generated output can use Trash or explicit permanent removal. Eligible working copies are removed through Git; branches and shared history remain. Every action rechecks current state.

Tools to compare

NullDisk offers native Mac maps, SSH/cloud sources, and development cleanup, plus a separate CLI. Match each tool’s platform and features to the job.

NullDisk features → · CLI and terminal workflows →

Common questions

Does NullDisk only show node_modules sizes?

No. Development Cleanup classifies recognized output and Git working copies, shows ownership/history evidence, and rechecks state before removal. Its CLI supports reports, an interactive review, and guarded cleanup.

Should I remove simulator folders or Docker.raw manually?

Use Xcode’s simulator management and Docker’s own storage tools where possible. Whole simulator directories and Docker images may contain state you need; avoid treating them as disposable caches.