# GPT-Commit
[Japanese](./README.jp.md)
A tool to make ChatGPT create a commit message based on a `git diff`.
This tool was originally intended for private use and has been modified for public use.
Commit message creation for [conversion-commits]
[convertional-commits]:(https://github.com/conventional-commits/conventionalcommits.org)
## Why use it?
- Making efficient - It is easy to change when there is a log of commit messages that are easy to understand during development, but it is a burden to come up with appropriate names.
- Validity - Avoid commit logs full of `Add` for feature additions, `modify` or `change` for changes, and `Fix` for bug fixes.
- Learning - Learning English expression skills, as my first language is not English.
## Notes
Ask ChatGPT to display three suggestions after choose the actual message to use
GPT-4 recommendation.
GPT-3.5 is not very accurate. 1/3 of commits often have commit messages that do not match the changes.
With proper commits, the output of the commit message will be better.
## Installation
```bash
cargo insatll gpt_commit
```
## Usage
Put the changes you want to commit into staging and run gpt-commit.
```bash
$ gptcommit run
Requesting to ChatGPT...
Please wait a moment.
# Actual result.
# 1
# 2
# 3
Please choose [1-3]
```
Pick the number of the commit message that you think is a good one from the results of the API.
If you want to commit the entire workspace instead of `git diff --cached`, use the `-n(--no-cached)` option.
In this case it will do `git commit -am "{choose message}"`.
```bash
gptcommit run -n
gptcommit run --no-cached
```
### Configuration
以下設定を用意しています。
| api_key | ChatGPT's API key | -a,--api-key |
| language | language of reply (except commit message) | -l,--language |
| url | URL of ChatGPT's API | -u,--url |
| model | model of ChatGPT | -m,--model |
The first time you run it, it will create a config file, so please enter your API key.
```bash
$ gptcommit config
Config file is not found
Create a Config file
Enter your ChatGPT API Key
{your API_Key}
```
Defaults are set the first time, so use the cofing command to set them if necessary.
```bash
gptcommit config -l Japanese
```
```bash
# Can be run without having to specify it
$ gptcommit config -l
Please enter language
> Spanish
```
## License
MIT
## Author
shunsuke6