Git и AI-агенты
AI-агенты (Claude Code, Codex, Cursor) пишут код сами. Они меняют много файлов за один запуск. Вы не успеваете читать всё по ходу работы.
Git превращает этот поток изменений в то, что можно проверить. Без Git работа с агентом — это риск. С Git — это обычная работа с ревью.
Что даёт Git при работе с агентом
Заголовок раздела «Что даёт Git при работе с агентом»| Проблема | Что делает Git |
|---|---|
| Агент изменил 15 файлов. Что именно? | git status и git diff показывают каждую строку |
| Агент сломал рабочий код | git restore . возвращает всё. Или git revert отменяет коммит |
| Не знаю, какую версию просить исправить | Каждый шаг — отдельный коммит с понятным сообщением |
| Агент мог удалить нужный файл | git status показывает удалённые файлы. git restore возвращает их |
| Хочу попробовать идею и не рисковать | Отдельная ветка. Не понравилось — удалили ветку |
Правила работы с агентом
Заголовок раздела «Правила работы с агентом»- Начинайте с чистого репозитория. Перед запуском агента выполните
git status. Все свои правки закоммитьте. Тогда всё, что появилось потом, сделал агент. - Одна задача — одна ветка. Не давайте агенту работать в
main. - Смотрите diff до commit.
git diff— главный инструмент. Агент ошибается. Читайте изменения, как чужой Pull Request. - Коммитьте маленькими шагами. Так проще откатить один шаг, а не всё.
- Агент не должен видеть секреты.
.envи ключи должны быть в.gitignore. Не вставляйте пароли в чат с агентом. - Оформляйте результат как Pull Request. Коллеги читают его так же, как код человека.
Тесты и CI — страховка от ошибок агента
Заголовок раздела «Тесты и CI — страховка от ошибок агента»Агент пишет правдоподобный код. Он может быть неверным. Поэтому проверки должны быть автоматическими.
- Чем больше тестов и проверок в CI, тем безопаснее давать агенту больше свободы.
- Красный CI — сигнал для агента: «исправь». Агент читает лог ошибки и чинит код сам.
- Зелёный CI не гарантирует правильную логику. Но он ловит ошибки синтаксиса, пропавшие столбцы, дубли и пустые результаты.
Хорошая практика: обложите проект тестами и проверками в CI и запускайте их при каждом Pull Request. Агент делает работу, CI проверяет, человек делает ревью.
задача → агент пишет код в ветке → commit → push → CI (тесты) → ревью человека → mergeАгент и CD
Заголовок раздела «Агент и CD»CD автоматически выкладывает код. Он повышает цену ошибки. Правило простое:
- Агент никогда не пушит напрямую в
mainи не запускает выкладку в продакшен. - Выкладка идёт только после merge Pull Request с зелёным CI и approve человека.
- Защита
mainиз урока CI/CD закрывает эту дыру.
Пример: цикл с агентом
Заголовок раздела «Пример: цикл с агентом»git switch -c add-refunds # ветка под задачуgit status # чисто? значит, всё новое сделал агент
# ... агент работает ...
git status # какие файлы изменилисьgit diff # что именно изменилосьgit add models/refunds.sqlgit commit -m "Add refunds model" # хороший шаг сохраняемgit restore models/revenue.sql # лишнюю правку агента откатываемgit push -u origin add-refunds # Pull Request и CIПодробнее про агентов: Claude Code 101 и Codex 101.
Практика
Заголовок раздела «Практика»Задание 1
Заголовок раздела «Задание 1»В репозитории sql-reports создайте ветку agent-task. Попросите агента (Claude Code, Codex или другого) добавить models/orders_by_status.sql с подсчётом заказов по статусам.
Проверка: агент создал файл. git status показывает его как новый.
Задание 2
Заголовок раздела «Задание 2»Посмотрите результат: git status и git diff. Прочтите запрос. Найдите хотя бы одну вещь, которую вы бы изменили.
Проверка: вы можете сказать, что агент сделал и что вы бы поправили.
Задание 3
Заголовок раздела «Задание 3»Если агент поменял файлы, которые вы не просили трогать, верните их. Закоммитьте только нужный файл.
Проверка: в коммите один файл. git status не показывает лишних изменений.
Решение
git restore <лишний файл>git add models/orders_by_status.sqlgit commit -m "Add orders by status model"Задание 4
Заголовок раздела «Задание 4»Отправьте ветку и откройте Pull Request. Убедитесь, что CI из прошлого урока запустился.
Проверка: на странице PR видна проверка checks.