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:
git clonebrings the first task into your own terminal.git pushsubmits your actual commits; the server grades them inside the push and answers where a rejected push would.git pulldelivers 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.