A lightweight, experimental CLI tool to simplify Git workflows, crafted out of necessity for developers(especially me ;).
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.
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.
You can install pygitmate via pip:
pip install pygitmateCan be used via cli with alias gmate as well (gmate new-branch):
pygitmate [COMMAND]pygitmate new-branchInteractive 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.
pygitmate commitHelps you create standardized commit messages:
- Select the commit type:
feat,fix,docs, etc. - Provide a concise summary for the commit.
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).
pygitmate new-branchExample 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
pygitmate commitExample 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
pygitmate mergeExample 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'.
- Click: Command-line interface library.
- GitPython: Python library for interacting with Git repositories.
- Rich: Beautiful CLI formatting and styling.
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.
- Python 3.11+
- Some Love
This project is licensed under the MIT License - see the LICENSE file for details.
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.