/aicommits

A CLI that writes your git commit messages for you with AI

Primary LanguageTypeScriptMIT LicenseMIT

AI Commits

AI Commits

A CLI that writes your git commit messages for you with AI. Never write a commit message again.

Current version

Setup

The minimum supported version of Node.js is the latest v14. Check your Node.js version with node --version.

  1. Install aicommits:

    npm install -g aicommits
  2. Retrieve your API key from OpenAI

    Note: If you haven't already, you'll have to create an account and set up billing.

  3. Set the key so aicommits can use it:

    aicommits config set OPENAI_KEY=<your token>

    This will create a .aicommits file in your home directory.

Upgrading

Check the installed version with:

aicommits --version

If it's not the latest version, run:

npm update -g aicommits

Usage

CLI mode

You can call aicommits directly to generate a commit message for your staged changes:

git add <files...>
aicommits

aicommits passes down unknown flags to git commit, so you can pass in commit flags.

For example, you can stage all changes in tracked files with as you commit:

aicommits --all # or -a

👉 Tip: Use the aic alias if aicommits is too long for you.

Generate multiple recommendations

Sometimes the recommended commit message isn't the best so you want it to generate a few to pick from. You can generate multiple commit messages at once by passing in the --generate <i> flag, where 'i' is the number of generated messages:

aicommits --generate <i> # or -g <i>

Warning: this uses more tokens, meaning it costs more.

Git hook

You can also integrate aicommits with Git via the prepare-commit-msg hook. This lets you use Git like you normally would, and edit the commit message before committing.

Install

In the Git repository you want to install the hook in:

aicommits hook install

Uninstall

In the Git repository you want to uninstall the hook from:

aicommits hook uninstall

Usage

  1. Stage your files and commit:

    git add <files...>
    git commit # Only generates a message when it's not passed in

    If you ever want to write your own message instead of generating one, you can simply pass one in: git commit -m "My message"

  2. Aicommits will generate the commit message for you and pass it back to Git. Git will open it with the configured editor for you to review/edit it.

  3. Save and close the editor to commit!

Configuration

Reading a configuration value

To retrieve a configuration option, use the command:

aicommits config get <key>

For example, to retrieve the API key, you can use:

aicommits config get OPENAI_KEY

You can also retrieve multiple configuration options at once by separating them with spaces:

aicommits config get OPENAI_KEY generate

Setting a configuration value

To set a configuration option, use the command:

aicommits config set <key>=<value>

For example, to set the API key, you can use:

aicommits config set OPENAI_KEY=<your-api-key>

You can also set multiple configuration options at once by separating them with spaces, like

aicommits config set OPENAI_KEY=<your-api-key> generate=3 locale=en

Options

OPENAI_KEY

Required

The OpenAI API key. You can retrieve it from OpenAI API Keys page.

locale

Default: en

The locale to use for the generated commit messages. Consult the list of codes in: https://wikipedia.org/wiki/List_of_ISO_639-1_codes.

generate

Default: 1

The number of commit messages to generate to pick from.

Note, this will use more tokens as it generates more results.

proxy

Set a HTTP/HTTPS proxy to use for requests.

To clear the proxy option, you can use the command (note the empty value after the equals sign):

aicommits config set proxy=

model

Default: gpt-3.5-turbo

The Chat Completions (/v1/chat/completions) model to use. Consult the list of models available in the OpenAI Documentation.

Tip: If you have access, try upgrading to gpt-4 for next-level code analysis. It can handle double the input size, but comes at a higher cost. Check out OpenAI's website to learn more.

timeout

The timeout for network requests to the OpenAI API in milliseconds.

Default: 10000 (10 seconds)

aicommits config set timeout=20000 # 20s

max-length

The maximum character length of the generated commit message.

Default: 50

aicommits config set max-length=100

Non-interactive mode

Enable non-interactive mode to use automatically the commit retrieved without review, specially useful for automations:

aicommits --noninteractive # or -y

How it works

This CLI tool runs git diff to grab all your latest code changes, sends them to OpenAI's GPT-3, then returns the AI generated commit message.

Video coming soon where I rebuild it from scratch to show you how to easily build your own CLI tools powered by AI.

Maintainers

Contributing

If you want to help fix a bug or implement a feature in Issues, checkout the Contribution Guide to learn how to setup and test the project.