Skip to main content

A CLI tool to simplify Git workflows

Project description

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.

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

pygitmate-0.1.4.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pygitmate-0.1.4-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file pygitmate-0.1.4.tar.gz.

File metadata

  • Download URL: pygitmate-0.1.4.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for pygitmate-0.1.4.tar.gz
Algorithm Hash digest
SHA256 2d056a7bf6df1aae9bf3afb913d6ff2d30b6e914c6fb79eb8680f6cebc7dd9fb
MD5 0c3063b71dec4b5f887dc909c3d49e24
BLAKE2b-256 4090c6c1d03d1bece758e327c9e400ad89440609926012ca02e7bac12dd16f1e

See more details on using hashes here.

File details

Details for the file pygitmate-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: pygitmate-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 7.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.10

File hashes

Hashes for pygitmate-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cecbbb41a43875ad6264e6d736477282bbb24aeb8f13c9b660100bbc81f047e8
MD5 e1307a51beeee1d85b78c4f77d148b2a
BLAKE2b-256 3df0eef2cc8d24165098f7fc717ca2ed422d58293a30cce3b1a49d8b787c7cba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page