Observed since 20 Oct, 17:02 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
A Clean & Powerful Git Workflow Engine
A Clean & Powerful Git Workflow Engine
Created by aarushlohit · github.com/aarushlohit · Zairok App
AARU wraps Git with a clean, opinionated command surface. Every destructive or side-effect action requires an explicit confirmation flag — you always see what will happen before it happens.
pip install aarushlohit-git — works on all platformspython3 -m aarush works immediately after install (no terminal restart)--confirm or --yes flagsaaru aaru shows system info, repo status, and quick start guidepip install aarushlohit-git
After install, if aaru isn't recognised yet (PATH not updated), use this fallback immediately:
python3 -m aarush --help # Linux / macOS
python -m aarush --help # Windows
Open a new terminal and aaru will work everywhere.
# From the repo:
bash install.sh
# Or directly from GitHub (no clone needed):
curl -fsSL https://raw.githubusercontent.com/aarushlohit/GIT_PROTOCOL/main/install.sh | bash
pipx → falls back to pip --user~/.local/bin to your shell configinstall_windows.bat
# Run in PowerShell:
iwr https://raw.githubusercontent.com/aarushlohit/GIT_PROTOCOL/main/install.ps1 | iex
# Linux / macOS:
./build_exe.sh
sudo cp dist/aaru /usr/local/bin/
# Windows:
build_exe.bat
# Then copy dist\aaru.exe to a folder in your PATH
pip install --upgrade aarushlohit-git
# 1. Initialize a new repo
aaru init
# 2. Set your Git identity (one-time)
aaru config-user --name "Your Name" --email "you@example.com"
# 3. Do some work, then save it
aaru save "add login page"
# 4. Push to remote
aaru send --yes
# 5. Pull + push in one step
aaru sync
aaru aaruDisplay the ASCII art banner with system info (Git version, Python version, repo, remote URL).
aaru aaru
aaru config-userConfigure your Git user name and email globally. Interactive prompts if flags are omitted.
aaru config-user --name "Jane Doe" --email "jane@example.com"
aaru config-user # prompts for both
| Flag | Description |
|---|---|
--name, -n | Your full name |
--email, -e | Your email address |
aaru initInitialize a new Git repository in the current directory and create a .aaru workspace folder.
aaru init
aaru clone <repo-url>Clone a remote repository and set up the .aaru directory automatically.
aaru clone https://github.com/user/repo.git
aaru configPrint the current Git configuration (equivalent to git config --list).
aaru config
aaru statusShow the working-tree status — modified files, staged files, untracked files.
aaru status
aaru save <message>Stage all changed files and commit in one step.
Equivalent to: git add -A && git commit -m "<message>"
aaru save "fix navbar alignment"
aaru save "initial commit"
aaru historyShow a compact, decorated commit graph with branch pointers.
aaru history
aaru diffShow unstaged changes in the working tree.
aaru diff
aaru undoSoft-undo the last commit. Keeps all your changes in the working tree (nothing is lost).
Equivalent to: git reset HEAD~1
Without --confirm: shows which commit would be undone — does NOT undo yet.
With --confirm: actually runs the undo.
aaru undo # preview: "Would undo: abc1234 fix navbar"
aaru undo --confirm # actually undoes the commit
| Flag | Description |
|---|---|
--confirm | Required to actually execute the undo |
aaru create <branch>Create a new branch. By default you stay on your current branch — the new branch is created but not switched to.
aaru create feature/login # creates branch, stays where you are
aaru create feature/login --switch # creates AND switches to it
| Flag | Description |
|---|---|
--switch | Switch to the new branch after creating it |
aaru switch <branch>Switch to an existing branch.
aaru switch main
aaru switch feature/login
aaru delete <branch>Delete a branch. Safe by default — refuses if the branch has unmerged commits.
Requires --confirm to actually execute.
aaru delete old-branch # blocked: shows error with instructions
aaru delete old-branch --confirm # safe delete (refuses if unmerged)
aaru delete old-branch --force --confirm # force-delete even if unmerged
| Flag | Description |
|---|---|
--confirm | Required to actually delete |
--force | Force-delete even if branch has unmerged commits |
aaru branchesList all local and remote branches.
aaru branches
aaru sendPush the current branch to its remote tracking branch.
Without --yes: shows a preview of commits that would be pushed — does NOT push.
With --yes: actually pushes.
aaru send # preview: shows commits to be pushed
aaru send --yes # push confirmed
| Flag | Description |
|---|---|
--yes | Confirm and execute the push |
aaru updateFetch all remotes without merging. Equivalent to git fetch --all.
aaru update
aaru syncPull remote changes then push local commits in one step.
Equivalent to: git pull && git push
Use --no-push to only pull without pushing.
aaru sync # pull + push
aaru sync --no-push # pull only
| Flag | Description |
|---|---|
--no-push | Pull only — skip the push step |
aaru add-upstream <url>Add the upstream remote for a forked repository (one-time setup before using fork-sync).
Prompts for URL if not provided.
aaru add-upstream https://github.com/original/repo.git
aaru add-upstream # prompts for URL
aaru fork-syncSync your fork with the original upstream repository.
Steps performed:
upstream remoteupstream/<current-branch> into your local branchorigin (your fork)# One-time setup:
aaru add-upstream https://github.com/original/repo.git
# Then sync any time:
aaru fork-sync # fetch + merge + push
aaru fork-sync --no-push # fetch + merge only (don't push)
aaru fork-sync myupstream # use a different upstream remote name
| Argument / Flag | Description |
|---|---|
[upstream] | Name of the upstream remote (default: upstream) |
--no-push | Pull from upstream only — skip pushing to origin |
aaru checkout-pr <number>Fetch a pull request as a local branch for testing.
Without --switch: fetches the PR branch, you stay on your current branch.
With --switch: fetches and switches to the PR branch.
aaru checkout-pr 42 # fetch PR #42, stay on current branch
aaru checkout-pr 42 --switch # fetch and switch to pr-42
aaru checkout-pr 42 --remote upstream # fetch from a different remote
| Flag | Description |
|---|---|
--switch | Switch to the PR branch after fetching |
--remote, -r | Remote to fetch from (default: origin) |
aaru stash [label]Stash all current working-tree changes. Optionally tag the stash with a label.
aaru stash # stash with no label
aaru stash "wip: auth refactor" # stash with a descriptive label
aaru stash-popApply the most recent stash and remove it from the stash list.
aaru stash-pop
aaru stash-listList all saved stashes.
aaru stash-list
aaru raw -- <git args>Pass any git command directly through the AARU pipeline. Use -- to separate AARU flags from git flags.
aaru raw -- log --oneline -10
aaru raw -- rebase -i HEAD~3
aaru raw -- remote -v
aaru raw -- cherry-pick abc1234
Note: The
--separator is required whenever your git command includes flags (anything starting with-).
AARU follows one rule: commands with side effects are safe by default and require an explicit opt-in flag.
| Command | Without the flag | Opt-in flag |
|---|---|---|
send | Shows preview of commits to push | --yes to push |
undo | Shows which commit would be undone | --confirm to run |
delete | Shows error with instructions | --confirm to delete |
delete (unmerged) | Shows error with instructions | --force --confirm |
create | Creates branch, stays on current | --switch to also switch |
checkout-pr | Fetches PR, stays on current branch | --switch to also switch |
sync | Pull + push | --no-push to skip push |
fork-sync | Fetch + merge + push | --no-push to skip push |
aaru status # check current state
aaru create feature/user-auth # create branch, stay on current
aaru switch feature/user-auth # switch to it when ready
# ... write code ...
aaru save "add JWT middleware"
aaru send --yes # push to remote
aaru undo # preview: "Would undo: abc1234 oops wrong file"
aaru undo --confirm # actually undo it
# fix your files
aaru save "correct commit message"
# One-time setup
aaru add-upstream https://github.com/original/project.git
# Every time you want to sync
aaru fork-sync # fetch upstream + merge + push to your fork
aaru fork-sync --no-push # only pull from upstream, review before pushing
aaru checkout-pr 84 # fetch pr-84, stay on current branch
# review the diff with: aaru diff
aaru checkout-pr 84 --switch # now switch to it and test
aaru switch main # done testing, switch back
aaru stash "wip: payment flow" # stash current work with a label
aaru switch hotfix/login-crash # switch context
# ... fix the bug ...
aaru save "fix login crash on mobile"
aaru send --yes
aaru switch feature/payment # come back
aaru stash-pop # restore your work
aaru branches # see all branches
aaru delete old-experiment # blocked — shows what to add
aaru delete old-experiment --confirm # safe delete
aaru delete wip-never-merged --force --confirm # force delete unmerged branch
Every command has built-in help:
aaru --help
aaru <command> --help
# Examples:
aaru send --help
aaru delete --help
aaru fork-sync --help
aaru checkout-pr --help
pypistats · 58 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-18 – 2026-10-18 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-15 – 2026-10-15 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-13 – 2026-10-13 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-11 – 2026-10-11 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-10 – 2026-10-10 | 5 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-08 – 2026-10-08 | 10 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-05 – 2026-10-05 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-04 – 2026-10-04 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-03 – 2026-10-03 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-10-01 – 2026-10-01 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-30 – 2026-09-30 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-29 – 2026-09-29 | 5 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-28 – 2026-09-28 | 5 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-27 – 2026-09-27 | 3 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-26 – 2026-09-26 | 8 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-25 – 2026-09-25 | 5 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-24 – 2026-09-24 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-21 – 2026-09-21 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-20 – 2026-09-20 | 8 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-18 – 2026-09-18 | 8 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-09 – 2026-09-09 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-06 – 2026-09-06 | 6 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-02 – 2026-09-02 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-31 – 2026-08-31 | 3 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-28 – 2026-08-28 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-27 – 2026-08-27 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-24 – 2026-08-24 | 17 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-23 – 2026-08-23 | 5 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-22 – 2026-08-22 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-20 – 2026-08-20 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-18 – 2026-08-18 | 54 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-17 – 2026-08-17 | 8 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-14 – 2026-08-14 | 4 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-13 – 2026-08-13 | 3 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-11 – 2026-08-11 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-09 – 2026-08-09 | 4 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-06 – 2026-08-06 | 3 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-04 – 2026-08-04 | 8 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-03 – 2026-08-03 | 16 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-31 – 2026-07-31 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-30 – 2026-07-30 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-29 – 2026-07-29 | 13 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-27 – 2026-07-27 | 2 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-26 – 2026-07-26 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-24 – 2026-07-24 | 1 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-23 – 2026-07-23 | 4 | 2026-10-20T20:54:59.8311371Z |
| 2026-07-22 – 2026-07-22 | 6 | 2026-10-20T20:54:59.8311371Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 2.0.0 | 25 Feb 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 17:02 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:23f054e6c0be6e6b2f35d3f7d64ebca60a44c831fb75913273e30daa4a8e5b9a