About pushups.sh

Every developer uses git, every day, and most are silently afraid of it. Merge conflicts, rebases, detached heads — pushups.sh exists to replace those fears with muscle memory and confidence.

The git server is the teacher

pushups.sh is a git server: a single Go binary speaking the wire protocol over HTTP and SSH, with grading and lesson-injection built into the push itself. Nothing here wraps GitHub, and nothing pretends to be a terminal.

That enables the loop the whole platform is built on:

  1. git clone brings the first task into your own terminal.
  2. git push submits your actual commits; the server grades them inside the push and answers where a rejected push would.
  3. git pull delivers the next lesson as a commit in your own history.

Your terminal, your editor, your real git.

A place of practice

AI or a web search can answer most if not all questions about git, but neither builds real git habits with hands-on knowledge. The volume of commits, branches and reviews a developer must handle is going up — not down.

Instead of messing around in actual repositories with real consequences, pushups.sh provides a playground where the game is to learn.

Courses are data

Anyone can author a push-graded course, and you decide what to teach. Extend the built-in catalog, add a funny community course, or train your team on internal workflows — it all runs on the same engine.

See authoring courses.

What's next?

See future plans.