GIT Hooks + OpenAI - Generate GIT commit messages from OpenAI

🧠 🧰 This tool generates AI-powered commit messages via Git hooks, automating meaningful message suggestions from OpenAI and others to improve commit quality and efficiency.

GitHub last commit GitHub license time tracker

Build Continuous Integration Infisical secrets check Linter check


[!CAUTION] This is still in development/beta. It will be GA when a major release 1.0 becomes available.

What this tool does

Generates a commit message based on the git diff result using the OpenAI API.


Requirements


Getting started

AICommitMessage NuGet Version AICommitMessage NuGet Downloads

This repository is available at NuGet under the name AICommitMessage.

Installation

  1. Install the tool globally (or per project/repository).
  2. Move to the project folder.
  3. Install the Git hook on the default hooks directory.
dotnet tool install -g AiCommitMessage
cd my-project/
dotnet-aicommitmessage install-hook
git add .
git commit -m ""

Use git log -1 to review the last commit details and find the automatically generated commit message.


Commit message pattern

The training model for the AI used is designed using as reference these guidelines:


Sequence of Execution

Here’s a flow diagram showing the sequence of execution of the prepare-commit-msg hook and its integration with dotnet-aicommitmessage to generate commit messages using the OpenAI API:

graph TD
    A[Git Commit] --> B[prepare-commit-msg Hook Trigger]
    B --> C[Invoke dotnet-aicommitmessage Tool]
    C --> D[Send Data to OpenAI API]
    D --> E[Generate Commit Message]
    E --> F[Check and append pre-defined commands to Commit Message]
    F --> G[Return Generated Commit Message]
    G --> H[Insert Commit Message into Git Commit]
    H --> I[Finalize Commit]

Commands

This tool accepts an argument as the command to execute. Here is a list of available commands:

Command Description
install-hook Installs GIT hooks in the default .git/hooks directory or in the custom directory configured in GIT settings.
generate-message Generates a commit message based on the current changes (git diff context).
set-settings Set the OpenAI settings.
help Display information about this program.
version Display version information.

Example output

Here is an example of the commit messages generated in a real-world project:

example

Debug

You can run the message generation manually to debug it, but it will not commit the content to your GIT repository. If you also want to check the OpenAI JSON response, append the -D parameter.

Manually generating the commit message

To manually generate a commit message without committing the staged changes, run the following command:

dotnet-aicommitmessage generate-message -m "."

Saving the OpenAI JSON response

If you want to persist the OpenAI JSON response, add the -D parameter and a debug.json file will be created with the response JSON.

dotnet-aicommitmessage generate-message -Dm "."

Here is a sample debug.json content:

```json { “Value”: { “CreatedAt”: “2024-11-20T12:54:03+00:00”, “FinishReason”: 0, “ContentTokenLogProbabilities”: [], “RefusalTokenLogProbabilities”: [], “Role”: 2, “Content”: [ { “Kind”: 0, “Text”: “feat - add reactivation handling for refunds due today”, “ImageUri”: null, “ImageBytes”: null, “ImageBytesMediaType”: null, “ImageDetailLevel”: null, “Refusal”: null } ], “ToolCalls”: [], “Refusal”: null, “FunctionCall”: null, “Id”: “chatcmpl-[[REDACTED]]”, “Model”: “gpt-4o-mini-2024-07-18”, “SystemFingerprint”: “fp-[[REDACTED]]”, “Usage”: { “OutputTokenCount”: 10, “InputTokenCount”: 6229, “TotalTokenCount”: 6239, “OutputTokenDetails”: { “ReasoningTokenCount”: 0 } } } }