GitGo wraps your most repetitive Git operations — init, add, commit, push, branch, stash — into short, memorable commands. It also handles the friction points most tools ignore: automatic SSH setup, HTTPS-to-SSH conversion, and a human-friendly stash interface called state management.
# Instead of this:
git init && git add . && git commit -m "init" && git remote add origin <url> && git push -u origin main
# Run this:
gitgo link https://github.com/username/repo.git "init"GitGo provides a CLI environment designed for faster and simpler Git workflows. Built to be intuitive, fast, and frictionless.
- Simplified Git Operations: Replaces chained commands with single intuitive commands for linking, pushing, and stashing.
- Smart Branch Hopping: Safely traverse branches with
jump. Auto-stashes messy code and prevents merge conflict disasters with a Try-And-Revert safety engine. - State Management: A human-readable interface over
git stash. States are named and listed by index so you never have to remember cryptic stash references. - Custom Defaults: Save your preferred branch name and commit message locally so you never have to type them again.
- SSH Auto-Setup: Generates an SSH key, adds it to
ssh-agent, and opens your GitHub settings automatically. - HTTPS to SSH Conversion: Silently converts the remote to SSH before pushing if your SSH is configured.
- Termux Compatibility: Works natively on Android natively handling common issues like dubious ownership errors.
- Python 3.8+
- Git 2.x+ — git-scm.com
- OpenSSH — required for
gitgo user login(pre-installed on most systems) - A GitHub account
pip install pygitgoVerify the installation:
gitgo -rNote for Termux (Android): GitGo detects the Termux environment automatically and adjusts install paths and browser behavior accordingly.
git clone https://github.com/Huerte/GitGo.git
cd GitGo
pip install -e .On first use, run the login wizard. GitGo generates an SSH key, prints the public key, and opens your GitHub SSH settings page automatically.
gitgo user loginPoint GitGo at an existing empty GitHub repository. It will initialize Git, stage everything, make the first commit, and push — handling branch naming and merge conflicts automatically.
gitgo link https://github.com/username/repo.git "Initial commit"# Push to an existing branch
gitgo push main "Fix auth bug"
# Create a new branch and push
gitgo push -n feature/login "Add login flow"Jump to a different branch without worrying about your uncommitted changes. GitGo will safely stash them, hop to the new branch, sync with main, and carefully unpack them.
gitgo jump feature/new-logingitgo state save "halfway through refactor"
gitgo state list
gitgo state load 1Save your preferred settings so you don't have to provide them every time.
gitgo config set default-branch develop
gitgo config set default-message "WIP: updates"
gitgo config get default-branchStages all changes, commits, and pushes in one command.
gitgo push [branch] [message]
gitgo push -n [branch] [message] # create new branch firstTip
Use gitgo push -h to see all available flags and examples.
| Flag | Description |
|---|---|
-n, --new |
Create a new branch before pushing |
If there are no new changes but unpushed commits exist, GitGo detects this and pushes without creating an empty commit.
Initializes a Git repository in the current directory, connects it to a remote, and pushes. Handles already-initialized repos gracefully and pulls unrelated histories.
gitgo link <github_repo_url> [commit_message]Safely switches branches without losing uncommitted progress. Auto-stashes, jumps, pulls from main, and unpacks. If applying the stash triggers a merge conflict, the built-in Try-and-Revert engine will offer to safely cancel the entire operation and instantly rewind your repository to exactly how it was before the command.
gitgo jump <branch>A human-readable interface over git stash.
gitgo state list # show all saved states
gitgo state save [name] # save current work (default name: Auto-Save)
gitgo state load [id] # restore a state by index
gitgo state delete [id] # delete a state by index
gitgo state delete -a # delete all saved statesShort aliases: -l, -s, -o, -d
gitgo user # show current Git identity
gitgo user login # generate SSH key and configure Git identity
gitgo user logout # remove SSH keys and Git identity configManage your GitGo defaults.
gitgo config set <key> <value>
gitgo config get <key>| Key | Description | Default |
|---|---|---|
default-branch |
The branch used for push/link | main |
default-message |
The commit message used for push | New Project Update |
gitgo help # show complete manual
gitgo <cmd> -h # show help for a specific command
gitgo -v # version
gitgo -r # verify GitGo is ready- SSH Auto-Setup:
gitgo user logingenerates aned25519SSH key, adds it tossh-agent, prints the public key, and opensgithub.com/settings/ssh/new. - HTTPS to SSH Conversion: If your remote is set to HTTPS, GitGo converts the remote to SSH before pushing if SSH is configured. No
git remote set-urlis required. - Termux Compatibility: Detects Termux via environment variables, adjusts binary locations (
$PREFIX/bin), usestermux-openfor browser actions, and natively handles thedetected dubious ownershipGit error. - State Management:
gitgo statewrapsgit stashwith named saves, indexed listing, and confirmation prompts.
Contributions are welcome and appreciated!
- Fork the Project
- Create a Feature Branch (
git checkout -b feature/your-feature) - Commit Changes
- Push to the Branch (
git push origin feature/your-feature) - Open a Pull Request
![]() Huerte Creator |
![]() Venomous-pie Core Contributor |
Distributed under the GPLv3 License. See LICENSE for details.


