Tech
August 11, 2024
Как зарядить git commit с помощью ИИ ?
Коротко о том, как можно генерировать простые commit messages с использованием локальной модели AI.
1. Установите зависимости
Мы не будем подробно останавливаться на этом пункте. Мы будем использовать Ollama и устанавливается она очень просто, я писал об этом здесь
2. Создаём файл Modelfile
FROM llama3.1 PARAMETER temperature 1 SYSTEM """ Analyze the following git diff and generate a commit message. """
3. Создаём локальную модель gitdiff
ollama create gitdiff -f Modelfile
4. Создаём файл git-aicommit
#!/bin/bash diff=$(git diff --cached | cat) if [ -z "$diff" ]; then echo "No staged changes to commit." exit 1 fi escaped_diff=$(echo "$diff" | jq -Rsa .) data=$(jq -n --arg diff "$escaped_diff" '{ "model": "gitdiff", "stream": false, "prompt": ("" + $diff) }') response=$(curl -s -X POST http://localhost:11434/api/generate -d "$data" -H "Content-Type: application/json") commit_message=$(echo "$response" | jq -r '.response') echo "$commit_message" > .git/COMMIT_EDITMSG git commit -eF .git/COMMIT_EDITMSG
5. Разместите git-aicommit
Выберите директорию которую система использует для поиска исполняемых файлов. Если нужно можете получить список таких директорий так:
echo $PATH
Допустим мы выбрали ~/bin/,
сделаем файл git-aicommit
исполняемым
chmod +x ~/bin/git-aicommit
6. Запуск
Комманду git commit
обычно выполняют после git add
. В нашем случае нет исключения. Добавляем файлы под контроль и заодно сразу смотрим git status
git add . && git status
git aicommit
Откроется редактор по умолчанию для редактирования сообщения, в нашем случае это `vim`.
Вводим :wq!
по классике и commit
фиксируется
git log