A friendly wrapper around common git tasks — commit, branch, push, pull, ship, and so much more.
One command to rule them all: stage → commit → fetch → rebase → push. Never type 5 commands in a row again. Shows PR URL hint for GitHub remotes.
Your git undo button. Uncommit, unstage, restore deleted branches from reflog. Because mistakes happen on Fridays.
Stash → checkout main → pull → prune dead branches → return → pop stash. The hokey pokey for your feature branch.
Repository health checks: detached HEAD, merge conflicts, large binaries, stash hoarding, and more. Pass --fix to auto-repair.
Line-by-line authorship with a heatmap of who really owns the file. Perfect for passive-aggressive code reviews.
Contributor stats with humorous commentary. Find out who's doing all the work (spoiler: it's probably one person).
While omg waits on git, spinners pick a random one-liner from a category matching what you're doing — followed by a dim · and the real task.
Stage all changes and commit in one step. No Vim. No regrets.
Checkout an existing branch with a spinner and clear feedback.
Friendly summary: branch sync state, staged, unstaged, and untracked files.
Show full git error messages instead of friendly translations. For the masochists.
Combine flags in one invocation — commit then switch, all at once.
Get or set git configuration without remembering the exact git syntax.
List all local branches. Current branch highlighted with *.
Create a new branch, stay on current one.
Create and immediately switch to a new branch.
Safely delete a fully-merged branch. Guards against deleting your current branch.
List all configured remotes and their fetch URLs.
Push commits to a remote. -f uses --force-with-lease (safer than --force). -u sets upstream.
Fetch and integrate changes. -r rebases instead of merge (keeps history clean).
Download objects and refs without merging. Fetches all remotes by default.
Merge a branch into current. Supports --squash to hide the evidence and --abort to panic.
Rebase current branch onto another — rewriting history like a politician.
Clone someone else's beautiful disaster. Optionally pass a custom directory name.
Apply a commit from another branch. It's not stealing if it's version control.
Commit history you can actually read. Defaults to 10 commits. --oneline for compact view.
Review changes before committing. --staged shows what you're about to regret.
Line-by-line authorship. -L for a specific line. --stats shows who really owns the file.
Undo a commit the right way — by making a new commit that undoes it. Won't get you fired.
Mark important milestones. Like v1.0.0 — "it barely works but marketing wants a release".
Time travel with varying degrees of danger. --hard is called that for a reason.
Stash current changes. Git's "hide your mess in the closet" feature.
Pop the most recent stash. Hope you remember what's in there.
List all stashes — your abandoned children.
Drop a stash (let go of the past) or apply without removing (commitment issues).
Undo the last commit, keeping your changes staged. Take-backsies without consequences.
Undo last commit AND discard changes. Nuclear option. There is no undo for this undo.
Unstage all staged files. Stage fright cured. Changes preserved.
Unstage a specific file. Partial regret is a valid emotion.
Recover deleted branches from reflog. Lazarus mode for branches you miss.
No action? Shows a recovery menu with all available options listed.
Initialize a new git repository. The first step on a long journey of merge conflicts.
Contributor stats with humorous commentary. 👑 award for top contributor included.
Check for a newer version on npm and install it automatically. Self-improvement for your CLI.
Get or set any git config value locally. Scoped to the current repo by default.
Install globally from npm. Exposes the omg binary on your PATH.
Confirm the install worked and check the version number.
Print all available commands and flags at any time.
Already installed? Stay up to date with a single command.