Skip to content

Generates auto commit messages with OpenAI GPT model

Notifications You must be signed in to change notification settings

shanginn/git-aicommit

Repository files navigation

GIT AI COMMIT

Tired of writing commit messages? Let the computer do it for you!

asciicast

It's shit, but better than "WIP"!

Installation

bun add -g git-aicommit

Configuration

This cli tool uses standard rc files:

  • local .git-aicommitrc
  • $HOME/.git-aicommitrc
  • $HOME/.git-aicommit/config
  • $HOME/.config/git-aicommit
  • $HOME/.config/git-aicommit/config
  • /etc/git-aicommitrc
  • /etc/git-aicommit/config

Or default config is used if no config file is found.

To override default config, create a config file and export an object with the following properties:

touch $HOME/.git-aicommitrc
// $HOME/.git-aicommitrc
export default {
    openAiKey: process.env.OPENAI_API_KEY,
    addAllChangesBeforeCommit: true,
    autocommit: true,
    openCommitTextEditor: false,
    language: 'english',
    systemMessagePromptTemplate: '' +
        'You are expert AI, your job is to write clear and concise Git commit messages.' +
        'Your responsibility is to ensure that these messages accurately describe the changes made in each commit,' +
        'follow established guidelines. Provide a clear history of changes to the codebase.' +
        'Write 1-2 sentences. Output only the commit message without comments or other text.',
    humanPromptTemplate: '' +
        'Read the following git diff for a multiple files and ' +
        'write 1-2 sentences commit message in {language}' +
        'without mentioning lines or files:\n' +
        '{diff}',
    excludeFromDiff: [
        '*.lock', '*.lockb'
    ],
    diffFilter: 'ACMRTUXB',
    completionPromptParams: {
        model: "gpt-4o-mini",
        temperature: 0.0,
        maxTokens: 1000,
    }
}

Command line arguments

git-aicommit --openAiKey="sk-..." --completionPromptParams.temperature=0.3 --no-autocommit

Usage

export OPENAI_API_KEY=sk-YOUR_API_KEY
git-aicommit

Or make an alias:

alias gai='git-aicommit'

## And run it:
gai

It's that simple!