GitGo CLI - Your Fast Git Companion. Simplifies git push, link, stash, and user management.
Project description
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"
Contents
Installation
pip install pygitgo
Verify the install:
gitgo -r
Termux (Android): Works natively. GitGo detects the Termux environment automatically and adjusts install paths and browser behavior accordingly.
Install from source
git clone https://github.com/Huerte/GitGo.git
cd GitGo
pip install -e .
Prerequisites
- Python 3.8+
- Git 2.x+ — git-scm.com
- OpenSSH — required for
gitgo user login(pre-installed on most systems) - A GitHub account
Quick Start
1. Set up your identity
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 login
2. Link a new project to GitHub
Point 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 with an existing remote automatically.
gitgo link https://github.com/username/repo.git "Initial commit"
3. Push changes
# 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"
4. Save your work-in-progress
gitgo state save "halfway through refactor"
gitgo state list
gitgo state load 1
Command Reference
gitgo push
Stages all changes, commits, and pushes in one command.
gitgo push [branch] [message]
gitgo push -n [branch] [message] # create new branch first
| 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.
gitgo link
Initializes a Git repository in the current directory, connects it to a remote, and pushes. Handles an already-initialized repo gracefully, and pulls unrelated histories automatically if the remote already has commits.
gitgo link <github_repo_url> [commit_message]
gitgo state
A human-readable interface over git stash. States are named and listed by index so you never have to remember stash@{2}.
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 states
Short aliases: -l, -s, -o, -d
gitgo user
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 config
Global flags
gitgo -h # help
gitgo -v # version
gitgo -r # verify GitGo is ready
How It Works
SSH auto-setup — gitgo user login generates an ed25519 SSH key, adds it to ssh-agent, prints the public key, and opens github.com/settings/ssh/new in your browser. After you add the key, GitGo verifies the connection automatically.
HTTPS to SSH conversion — If your remote is set to an HTTPS URL and your SSH is configured, GitGo silently converts the remote to SSH before pushing. No manual git remote set-url required.
Termux compatibility — GitGo detects Termux via environment variables and file paths, adjusts binary locations ($PREFIX/bin), uses termux-open for browser actions, and handles the detected dubious ownership Git error that commonly appears in shared Android storage.
State management — gitgo state wraps git stash with named saves, indexed listing, and confirmation prompts. Under the hood it uses git stash push -m, git stash apply, and git stash drop.
Contributing
Issues and pull requests are welcome.
- Fork the repository
- Create a branch:
git checkout -b fix/your-fix - Make your change and add tests if applicable
- Push and open a PR against
main
Please open an issue first for significant changes so we can discuss the approach.
License
GPLv3 — see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygitgo-1.0.0.tar.gz.
File metadata
- Download URL: pygitgo-1.0.0.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cee876b5aba011d75e67cb22b0ce99c3b5efefe598f42094361ef95c076f65f0
|
|
| MD5 |
a2316c1967ee6a0d393fd63221a6b6c5
|
|
| BLAKE2b-256 |
c3fe937c7afbc173f4132c22548ccca105ad2c64da348bf0a484bb4758737af1
|
File details
Details for the file pygitgo-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pygitgo-1.0.0-py3-none-any.whl
- Upload date:
- Size: 29.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ce20acd2d8891c67d8c463a07ad734a5e769d3eb2cee90b2add814877071fcc
|
|
| MD5 |
8c96ad05f0a28b9d566ccd818096d970
|
|
| BLAKE2b-256 |
3458de7dbd3f3e4ade724ff81639493cc3a108234b80fbe39e98a69f547b83b2
|