Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

AI git commit generator

В создании коммитов, да и тегов, для гита самое сложное — придумать ёмкое описание, чтобы оно включало все важные аспекты изменений. А ещё это нужно сделать в правильном формате и на грамотном английском.

Поэтому в какой-то момент я просто взял и сделал bash-утилиты, использующие AI для этих вещей: gitai для коммитов и gitaitag для тегов. О них и расскажу ниже.


AI для коммитов и тегов: gitai и gitaitag

Что это такое?

gitai — это bash-скрипт для Linux и macOS, который помогает создавать информативные git commit-сообщения с помощью OpenAI (или совместимых API). Скрипт не только пишет лаконичные заголовки в прошедшем времени и краткое описание изменений, но и добавляет эмодзи, список затронутых файлов и даже проводит AI-код-ревью с подсветкой потенциальных проблем или улучшений — всё на грамотном английском.

gitaitag — похожий bash-скрипт для генерации содержательных сообщений к git-тегам и автоматического подбора следующей версии. Он анализирует все коммиты с прошлого тега, резюмирует изменения, добавляет релевантные эмодзи и оформляет красивое англоязычное описание релиза.


Ключевые возможности

gitai:

  • ✨ Генерирует commit-сообщения через OpenAI или совместимый API (можно быстро переключиться на xAI и т.д.)
  • 🐞 Проводит AI-код-ревью и вставляет комментарии о возможных багах или улучшениях прямо в коммит
  • 📝 Автоматически резюмирует изменения (diff)
  • 💬 Украсит сообщение релевантными эмодзи
  • 📄 Перечисляет изменённые файлы
  • 💡 Принимает подсказку (hint) для дополнительного контекста
  • 🏷️ Всегда пишет на английском
  • 🔒 Не даст закоммитить, если нет подготовленных изменений
  • 🖊️ Даёт возможность отредактировать сообщение перед коммитом

gitaitag:

  • 🚀 Использует любой OpenAI-совместимый API для генерации описания тега
  • 🏷️ Автоматически подбирает следующую версию тега (например, “v1.2.3” → “v1.2.4”)
  • ✍️ Генерирует подробный changelog по всем коммитам с прошлого тега
  • 🤖 Добавляет эмодзи и делает сообщение приятным для чтения
  • 💡 Можно добавить свой hint для более точного описания релиза
  • 🏷️ Всегда генерирует сообщение на английском
  • ✏️ Позволяет вручную подправить текст перед созданием тега
  • 🔒 Не создаёт тег, если нет новых коммитов с прошлого релиза

Требования

Обе утилиты требуют:

  • ОС: Linux или macOS (Windows не поддерживается)
  • Зависимости:
    • jq (парсинг JSON)
    • curl (обычно уже установлен)
    • nano (или замените на любимый редактор в скрипте)
    • API-ключ OpenAI: переменная окружения $OPENAI_API_KEY

Установка

  1. Установите зависимости:

    # Для Debian/Ubuntu и производных
    sudo apt-get install jq curl nano
    
    # Для macOS (через Homebrew)
    brew install jq curl nano
    
  2. Скачайте скрипты:

    • 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
      
  3. Добавьте ~/bin в $PATH:

    Добавьте в ~/.bashrc, ~/.zshrc или аналогичный файл:

    export PATH="$HOME/bin:$PATH"
    

    Перезапустите терминал или выполните source ~/.bashrc (или соответствующий файл).

  4. Установите переменную с OpenAI API-ключом:

    export OPENAI_API_KEY="sk-...your key here..."
    

    Для удобства добавьте эту строку в настройки вашей оболочки.


Использование

Для коммитов — gitai:

  1. Перейдите в директорию git-проекта:

    cd /path/to/your/project
    
  2. Запустите скрипт:

    gitai
    

    Скрипт:

    • автоматически выполнит git add для всех изменений,
    • сгенерирует commit-сообщение с помощью AI,
    • откроет его в редакторе для финального редактирования,
    • закоммитит после сохранения.
  3. (Опционально) Можно добавить hint для AI:

    gitai "Fix for production crash on startup"
    

Для тегов — gitaitag:

  1. Перейдите в директорию git-проекта:

    cd /path/to/your/project
    
  2. Запустите скрипт:

    gitaitag
    

    Скрипт:

    • найдет последний тег и предложит следующий (например, “v1.2.3” → “v1.2.4”),
    • проанализирует все коммиты после прошлого тега,
    • сгенерирует AI-описание релиза с эмодзи,
    • откроет его в редакторе для вашего финального взгляда,
    • создаст аннотированный тег с этим сообщением.
  3. (Опционально) Можно добавить 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"

Ссылки