Skip to main content

pygitmate

PyPI version
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.

Metadata

Release files for pygitmate 0.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pygitmate 0.1.4
File Size Uploaded
pygitmate-0.1.4.tar.gz 12.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pygitmate 0.1.4
File Interpreter ABI Platform
pygitmate-0.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 19.5 kB

Release files / pygitmate-0.1.4.tar.gz

Download URL pygitmate-0.1.4.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
2d056a7bf6df1aae9bf3afb913d6ff2d30b6e914c6fb79eb8680f6cebc7dd9fb
BLAKE2b-256 checksum
How to use checksums
4090c6c1d03d1bece758e327c9e400ad89440609926012ca02e7bac12dd16f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.10

Release files / pygitmate-0.1.4-py3-none-any.whl

Download URL pygitmate-0.1.4-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cecbbb41a43875ad6264e6d736477282bbb24aeb8f13c9b660100bbc81f047e8
BLAKE2b-256 checksum
How to use checksums
3df0eef2cc8d24165098f7fc717ca2ed422d58293a30cce3b1a49d8b787c7cba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.5.10

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page