A CLI tool to simplify Git workflows
Project description
pygitmate
A lightweight, experimental CLI tool to simplify Git workflows, crafted out of necessity for developers(especially me ;).
🚀 Features
pygitmate is a developer-focused Git CLI tool designed to streamline common Git operations while maintaining flexibility.
-
Branch Management
- Create branches for features, hotfixes, enhancements, and more.
- Automatically fetch and switch to the base branch before creating a new one.
-
Commit with Standards
- Helps you write commits that follow standardized conventions.
-
Merging Simplified
- Merge your current branch into another effortlessly, with options to stash changes dynamically.
-
Interactive Workflows
- Fully interactive CLI with dynamic prompts for missing information.
⚠️ Experimental Status
This (new) tool is in its experimental phase and was built out of the need for a personal Git helper. Use at your own discretion, and report issues or suggest features if you find it helpful.
📥 Installation
You can install pygitmate via pip:
pip install pygitmate
Can be used via cli with alias gmate as well (gmate new-branch):
🛠️ Usage
General Usage
pygitmate [COMMAND]
Available Commands
1. Create a New Branch
pygitmate new-branch
Interactive flow for creating a branch:
- Select the branch type: Feature, Hotfix, Enhancement, etc.
- Specify a branch name.
- Automatically fetches the latest base branch (default:
master) before creating the new branch.
2. Commit Changes
pygitmate commit
Helps you create standardized commit messages:
- Select the commit type:
feat,fix,docs, etc. - Provide a concise summary for the commit.
3. Merge Branches
pygitmate merge [TARGET_BRANCH]
Merge the current branch into a target branch:
- Automatically checks for uncommitted changes and stashes them if required.
- Provides a list of recent branches to choose from if no target branch is specified (default:
master).
💡 Examples
Creating a New Branch
pygitmate new-branch
Example Interaction:
Select the branch type:
1. Feature
2. Hotfix
3. Enhancement
4. Bugfix
Enter Branch Type number [1/2/3/4]: 1
Enter branch name (without spaces): feature_x
Committing Changes
pygitmate commit
Example Interaction:
Select the type of commit:
1. feat: A new feature
2. fix: A bug fix
3. docs: Documentation changes
Enter Commit Type number [1/2/3]: 1
Enter a concise summary of your changes: Added login functionality
Merging Branches
pygitmate merge
Example Interaction:
Recent branches:
1. feature/login
2. bugfix/ui-fix
3. enhancement/readme-update
...
10. hotfix/payment-bug
11. master (default)
Select the target branch by number or enter branch name [11]: 1
Warning: Uncommitted changes detected in the working directory.
Do you want to stash the changes? (yes/no) [yes]: yes
Stashing uncommitted changes...
Switching to target branch 'feature/login'...
Merging branch 'main' into 'feature/login'...
Successfully merged 'main' into 'feature/login'.
🧰 Dependencies
- Click: Command-line interface library.
- GitPython: Python library for interacting with Git repositories.
- Rich: Beautiful CLI formatting and styling.
🤝 Contributions
Since pygitmate is experimental, contributions, feature suggestions, and issue reports are highly welcome. Fork this repository and submit a pull request to improve the tool.
🏗️ Built With
- Python 3.11+
- Some Love
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
⚡ Acknowledgments
pygitmate was created out of a need for simplifying repetitive Git tasks and improving efficiency in workflows. Inspired by the challenges faced during development, this tool is a handy companion for developers who work extensively with Git.
Project details
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 pygitmate-0.1.2.tar.gz.
File metadata
- Download URL: pygitmate-0.1.2.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d978aa90c9ce43f22668bc53e77e0207c82fa1dc0c3d9616d27bdc8743f1a9d
|
|
| MD5 |
ef452abca0831e04621de6132508979f
|
|
| BLAKE2b-256 |
386bb72b02aa3c20afba83dbad333b09004ff466efd8d78e4e78e9831bc90488
|
File details
Details for the file pygitmate-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pygitmate-0.1.2-py3-none-any.whl
- Upload date:
- Size: 6.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42af02eaf2fd640306ba2fcdc05d091184b0777a1ff4d61a48b4ff8441b0ba1e
|
|
| MD5 |
ee42b651f4e3e27882524768265d313c
|
|
| BLAKE2b-256 |
118d7b3e6de7b52aeb4a8f001d778ff4f43a0f53109dd5931336f0771b121c72
|