Automate Your Git Commit Messages with ChatGPT
Pranav Raut
Posted on September 6, 2024
Creating meaningful and concise commit messages is an essential part of a good development workflow. These messages help in tracking changes, understanding project history, and collaborating with team members. But let's admit it—writing commit messages can sometimes be a mundane task. In this article, we'll walk you through how to use OpenAI’s ChatGPT to generate Git commit messages automatically and how to run this script from any directory on your macOS system.
Prerequisites
To follow along, you’ll need:
- Basic knowledge of Python.
- Git installed on your machine.
- An account on OpenAI and an API key. If you don't already have an API key, you can learn how to generate one by following this guide on creating an OpenAI API key.
Step 1: Setting Up the Environment
First, install the openai
Python package:
pip install openai
Next, set your OpenAI API key as an environment variable:
export OPENAI_API_KEY='your_openai_api_key'
Step 2: Writing the Python Script
Here’s the Python script generate_commit_message.py
:
#!/usr/bin/env python3
import subprocess
from openai import OpenAI
import os
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
def get_git_diff():
"""Fetch the git changes."""
result = subprocess.run(
["git", "diff", "--staged"], stdout=subprocess.PIPE, text=True
)
return result.stdout
def generate_commit_message(changes):
"""Use OpenAI API to generate a commit message."""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": "You are an assistant that generates helpful and concise git commit messages.",
},
{
"role": "user",
"content": f"Generate a Git commit message for the following changes, following the Git commit standards:\n\n{changes}",
},
],
max_tokens=350, # Adjust as needed
temperature=0.5,
)
return response.choices[0].message.content.strip()
def main():
# Fetch the changes
changes = get_git_diff()
if not changes:
print("No staged changes found.")
return
# Generate commit message
commit_message = generate_commit_message(changes)
print(f"Generated Commit Message: {commit_message}")
# Optional: Automatically commit with the generated message
# subprocess.run(["git", "commit", "-m", commit_message])
if __name__ == "__main__":
main()
Save this script to a file named generate_commit_message.py
.
Step 3: Making the Script Executable and Accessible
To make the script executable and accessible from any directory, follow these steps:
-
Make the Script Executable:
chmod +x /path/to/your/generate_commit_message.py
-
Move the Script to a Directory in Your PATH:
sudo mv /path/to/your/generate_commit_message.py /usr/local/bin/generate_commit_message
-
Ensure the OpenAI API Key is Set in Your Environment:
Add the following line to your shell profile (e.g.,.bash_profile
,.zshrc
, or.bashrc
):
export OPENAI_API_KEY='your_openai_api_key'
-
Reload Your Profile:
source ~/.bash_profile # or source ~/.zshrc or source ~/.bashrc
Step 4: Running the Script
Ensure you have staged changes by running:
git add .
Then execute your script from any directory:
generate_commit_message
You should see a generated commit message printed in your terminal.
Conclusion
By leveraging ChatGPT with a simple Python script, you can automate the generation of meaningful Git commit messages. This not only saves time but also ensures that your commit history is both informative and well-documented. Making the script executable from any directory on macOS streamlines your workflow further. Feel free to customize the script to better fit your needs or extend its functionality. Happy coding!
Posted on September 6, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.