AI git commit generator
В создании коммитов, да и тегов, для гита самое сложное — придумать ёмкое описание, чтобы оно включало все важные аспекты изменений. А ещё это нужно сделать в правильном формате и на грамотном английском.
Поэтому в какой-то момент я просто взял и сделал bash-утилиты, использующие AI для этих вещей: gitai для коммитов и gitaitag для тегов. О них и расскажу ниже.
gitai — это bash-скрипт для Linux и macOS, который помогает создавать информативные git commit-сообщения с помощью OpenAI (или совместимых API). Скрипт не только пишет лаконичные заголовки в прошедшем времени и краткое описание изменений, но и добавляет эмодзи, список затронутых файлов и даже проводит AI-код-ревью с подсветкой потенциальных проблем или улучшений — всё на грамотном английском.
gitaitag — похожий bash-скрипт для генерации содержательных сообщений к git-тегам и автоматического подбора следующей версии. Он анализирует все коммиты с прошлого тега, резюмирует изменения, добавляет релевантные эмодзи и оформляет красивое англоязычное описание релиза.
- ✨ Генерирует commit-сообщения через OpenAI или совместимый API (можно быстро переключиться на xAI и т.д.)
- 🐞 Проводит AI-код-ревью и вставляет комментарии о возможных багах или улучшениях прямо в коммит
- 📝 Автоматически резюмирует изменения (diff)
- 💬 Украсит сообщение релевантными эмодзи
- 📄 Перечисляет изменённые файлы
- 💡 Принимает подсказку (hint) для дополнительного контекста
- 🏷️ Всегда пишет на английском
- 🔒 Не даст закоммитить, если нет подготовленных изменений
- 🖊️ Даёт возможность отредактировать сообщение перед коммитом
- 🚀 Использует любой OpenAI-совместимый API для генерации описания тега
- 🏷️ Автоматически подбирает следующую версию тега (например, “v1.2.3” → “v1.2.4”)
- ✍️ Генерирует подробный changelog по всем коммитам с прошлого тега
- 🤖 Добавляет эмодзи и делает сообщение приятным для чтения
- 💡 Можно добавить свой hint для более точного описания релиза
- 🏷️ Всегда генерирует сообщение на английском
- ✏️ Позволяет вручную подправить текст перед созданием тега
- 🔒 Не создаёт тег, если нет новых коммитов с прошлого релиза
Обе утилиты требуют:
- ОС: Linux или macOS (Windows не поддерживается)
- Зависимости:
-
Установите зависимости:
# Для Debian/Ubuntu и производных sudo apt-get install jq curl nano # Для macOS (через Homebrew) brew install jq curl nano
-
Скачайте скрипты:
- gitai:
curl -o ~/bin/gitai https://gist.github.com/valmat/44822e1b7c6884bebb25b3ff005117fe/raw/gitai.sh chmod +x ~/bin/gitai
- gitaitag:
curl -o ~/bin/gitaitag https://gist.github.com/valmat/cd64141685f2655c4a02d59902962ca3/raw/gitaitag.sh chmod +x ~/bin/gitaitag
- gitai:
-
Добавьте
~/bin
в$PATH
:Добавьте в
~/.bashrc
,~/.zshrc
или аналогичный файл:export PATH="$HOME/bin:$PATH"
Перезапустите терминал или выполните
source ~/.bashrc
(или соответствующий файл). -
Установите переменную с OpenAI API-ключом:
export OPENAI_API_KEY="sk-...your key here..."
Для удобства добавьте эту строку в настройки вашей оболочки.
-
Перейдите в директорию git-проекта:
cd /path/to/your/project
-
Запустите скрипт:
gitai
Скрипт:
- автоматически выполнит
git add
для всех изменений, - сгенерирует commit-сообщение с помощью AI,
- откроет его в редакторе для финального редактирования,
- закоммитит после сохранения.
- автоматически выполнит
-
(Опционально) Можно добавить hint для AI:
gitai "Fix for production crash on startup"
-
Перейдите в директорию git-проекта:
cd /path/to/your/project
-
Запустите скрипт:
gitaitag
Скрипт:
- найдет последний тег и предложит следующий (например, “v1.2.3” → “v1.2.4”),
- проанализирует все коммиты после прошлого тега,
- сгенерирует AI-описание релиза с эмодзи,
- откроет его в редакторе для вашего финального взгляда,
- создаст аннотированный тег с этим сообщением.
-
(Опционально) Можно добавить hint для AI:
gitaitag "Major refactor and new API integration"
- Скрипты не поддерживают Windows.
- Редактор по умолчанию —
nano
, можно заменить в скрипте на любой другой. - Если нет изменений (для
gitai
) или новых коммитов с прошлого тега (дляgitaitag
), скрипты не будут ничего делать. - Каждый запрос к AI учитывается в биллинге вашего провайдера.
# Обычный коммит с помощью AI
gitai
# Коммит с подсказкой для AI
gitai "Refactored backend integration"
# Обычное создание тега с описанием через AI
gitaitag
# Тег с подсказкой для AI
gitaitag "Initial stable version for production"