Automatically generate and commit changes using GitHub Copilot
Project description
git-copilot-commit
AI-powered Git commit assistant that generates conventional commit messages using GitHub Copilot.
Features
- Generates commit messages based on your staged changes
- Supports multiple LLM models: GPT-4, Claude, Gemini, and more
- Allows editing of generated messages before committing
- Follows the Conventional Commits standard
Installation
Install the tool using uv
Install uv:
# On macOS and Linux.
curl -LsSf https://astral.sh/uv/install.sh | sh
# On Windows.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
You can run the latest version of tool directly every time by invoking this one command:
# Every invocation installs latest version into temporary environment and runs --help
uvx git-copilot-commit --help
Alternatively, you can install the tool once into a global isolated environment
and run git-copilot-commit to invoke it:
# Install into global isolated environment
uv tool install git-copilot-commit
# Run --help to see available commands
git-copilot-commit --help
Prerequisites
- Active GitHub Copilot subscription
Quick Start
-
Authenticate with GitHub Copilot:
uvx git-copilot-commit authenticate
If your cached GitHub token is revoked or expires, refresh it with:
uvx git-copilot-commit authenticate --force
-
Make changes in your repository.
-
Generate and commit:
uvx git-copilot-commit commit # Or, if you want to stage all files and accept the generated commit message, use: uvx git-copilot-commit commit --all --yes
Usage
Commit changes
$ uvx git-copilot-commit commit --help
Usage: git-copilot-commit commit [OPTIONS]
Generate commit message based on changes in the current git repository and commit them.
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --all -a Stage all files before committing │
│ --split Split staged hunks into multiple commits automatically. │
│ Pass `--split=N` to express a preference for N commits. │
│ --model -m MODEL_ID Model to use for generating commit message │
│ --yes -y Automatically accept the generated commit message │
│ --context -c TEXT Optional user-provided context to guide commit message │
│ --ca-bundle PATH Path to a custom CA bundle (PEM) │
│ --insecure Disable SSL certificate verification. │
│ --native-tls --no-native-tls Use the OS's native certificate store via 'truststore' │
│ for httpx instead of the Python bundle. Ignored if │
│ --ca-bundle or --insecure is used. │
│ [default: no-native-tls] │
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Examples
Commit all changes:
uvx git-copilot-commit commit --all
Accept the generated commit message without editing:
uvx git-copilot-commit commit --yes
Use a specific model:
uvx git-copilot-commit commit --model claude-3.5-sonnet
Split staged hunks into separate commits:
uvx git-copilot-commit commit --split
Prefer two commits:
uvx git-copilot-commit commit --split 2
Commit Message Format
Follows Conventional Commits:
<type>[optional scope]: <description>
Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formatting onlyrefactor: Code restructureperf: Performancetest: Testschore: Maintenancerevert: Revert changes
Git Configuration
Add a git alias by adding the following to your ~/.gitconfig:
[alias]
ai-commit = "!f() { uvx git-copilot-commit commit $@; }; f"
Now you can run to review the message before committing:
git ai-commit
Alternatively, you can stage all files and auto accept the commit message and specify which model should be used to generate the commit in one CLI invocation.
git ai-commit --all --yes --model claude-3.5-sonnet
[!TIP]
Show more context in diffs by running the following command:
git config --global diff.context 3This may be useful because this tool sends the diffs with surrounding context to the LLM for generating a commit message
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 git_copilot_commit-0.5.5.tar.gz.
File metadata
- Download URL: git_copilot_commit-0.5.5.tar.gz
- Upload date:
- Size: 56.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6350bd5d94b65864c0e04fc795bb2aeaed29926e7b644c15607077350a77762
|
|
| MD5 |
3bd81b561fc1c6642c1c2cd684f4034a
|
|
| BLAKE2b-256 |
6dab9a9fe146e1b3b681eb0f3c6856d7201ef3c944c35c35dd362542de998ad3
|
File details
Details for the file git_copilot_commit-0.5.5-py3-none-any.whl.
File metadata
- Download URL: git_copilot_commit-0.5.5-py3-none-any.whl
- Upload date:
- Size: 35.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd31896b4fc68af97ff58fd10b4bda2d36c2291b1fe45caaa7deea75ece66e8b
|
|
| MD5 |
8cd2bacea96ce56a5a0fe468b5c68c54
|
|
| BLAKE2b-256 |
13f1f06f836fc0a7de3430b669f0b59a9c6f686864c673051a4f822f5f163779
|