gmcommits
v1.0.2
Published
Writes your git commit messages for you with AI
Downloads
1
Readme
Setup
The minimum supported version of Node.js is the latest v14. Check your Node.js version with
node --version
.
Install gmcommits:
npm install -g gmcommits
Retrieve your API key from OpenAI
Note: If you haven't already, you'll have to create an account and set up billing.
Set the key so gmcommits can use it:
gmcommits config set OPENAI_KEY=<your token>
This will create a
.gmcommits
file in your home directory.
Upgrading
Check the installed version with:
gmcommits --version
If it's not the latest version, run:
npm update -g gmcommits
Usage
CLI mode
You can call gmcommits
directly to generate a commit message for your staged changes:
git add <files...>
gmcommits
gmcommits
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:
gmcommits --all # or -a
👉 Tip: Use the
aic
alias ifgmcommits
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:
gmcommits --generate <i> # or -g <i>
Warning: this uses more tokens, meaning it costs more.
Git hook
You can also integrate gmcommits 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:
gmcommits hook install
Uninstall
In the Git repository you want to uninstall the hook from:
gmcommits hook uninstall
Usage
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"
gmcommits 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.
Save and close the editor to commit!
Configuration
Reading a configuration value
To retrieve a configuration option, use the command:
gmcommits config get <key>
For example, to retrieve the API key, you can use:
gmcommits config get OPENAI_KEY
You can also retrieve multiple configuration options at once by separating them with spaces:
gmcommits config get OPENAI_KEY generate
Setting a configuration value
To set a configuration option, use the command:
gmcommits config set <key>=<value>
For example, to set the API key, you can use:
gmcommits config set OPENAI_KEY=<your-api-key>
You can also set multiple configuration options at once by separating them with spaces, like
gmcommits 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):
gmcommits 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)
gmcommits config set timeout=20000 # 20s
max-length
The maximum character length of the generated commit message.
Default: 50
gmcommits config set max-length=100
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
Hassan El Mghari: @Nutlope
Hiroki Osame: @privatenumber
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.