Программирование с ИИ
ENRU
5.1

Git как страховка

коммит перед каждой задачей

Что это

Git — система, которая хранит историю изменений. Для работы с ИИ он важнее, чем для работы руками, по одной причине: он делает откат дешёвым.

Откат — главный инструмент из статьи 4.10, и его цена целиком зависит от того, когда был последний коммит. Коммит час назад — откат стоит часа. Коммит перед задачей — откат стоит ничего.

Как выглядит в коде

Схема из книги — будет перерисована для сайта
Коммит перед каждой задачей. Неудачная попытка откатывается к ближайшей точке, а не к утру.

Четыре команды, которых хватает

git status --short          # что изменилось
git add -A                  # взять все изменения
git commit -m "описание"    # зафиксировать
git log --oneline           # посмотреть историю

Вывод git status --short читается просто:

измерено
 M bot.py
?? temp.txt

M — файл изменён, ?? — файл новый и git про него не знает.

Привычка, ради которой всё затевалось

Коммит перед тем, как дать ИИ задачу. Не после, а до.

git add -A && git commit -m "перед добавлением команды /stats"

Пять секунд. После этого что бы ни произошло — сколько бы файлов ИИ ни переписал, что бы ни сломал — возврат к рабочему состоянию стоит одной команды.

Откат

git checkout -- bot.py      # откатить один файл
git checkout -- .           # откатить всё незакоммиченное

Проверено на живом репозитории: файл с print('сломал') после git checkout -- bot.py снова стал print('v2 — добавил погоду').

Если откатывать жалко:

git stash                   # отложить в сторону
git stash pop               # вернуть обратно

Вернуться к старому коммиту:

git log --oneline           # найти нужный
git reset --hard 7c93d98    # вернуться к нему

Что писать в сообщении коммита

Коротко и о том, зачем, а не что. Что — видно из диффа.

ПлохоХорошо
fixисправлен KeyError при отсутствии города
update bot.pyподписки перенесены в SQLite
измененияперед рефакторингом хендлеров

Последний пример — тот самый коммит «до задачи». Такое сообщение через неделю скажет, где была точка возврата.

Как сказать ИИ

Запрос
Я закоммитил текущее состояние. Делай правку смело,
если что — откачу.

Фраза не для ИИ, а для себя: она проверяет, что коммит действительно сделан.

Полезное применение git в разговоре с ИИ:

Запрос
Вот дифф моих изменений за сессию. Составь сообщение
коммита: одна строка, по-русски, о том, зачем менялось.
Запрос
Код работал вчера и сломался сегодня. Вот git log
за два дня. С какого коммита стоит начать поиск?

На что смотреть

Коммиты раз в день. Тогда откат стоит дня. Коммить надо по задачам, а не по времени.

Всё одним коммитом. Рефакторинг, фича и починка вместе — откатить что-то одно уже нельзя (статья 3.6).

git add -A без взгляда на status. Так в коммит попадают .env, базы, временные файлы. Сначала status, потом add.

Нет .gitignore. Тогда в репозиторий попадает .venv со всеми библиотеками и секреты. Про это — статья 5.7.

Коммит «на всякий случай» вместо отката. Коммитить сломанное, чтобы «не потерять», — путь к истории, в которой нет ни одной рабочей точки.

Шпаргалка

  • Коммит перед задачей, а не после. Пять секунд.

  • Четыре команды: status --short · add -A · commit -m · log --oneline.

  • Откат: checkout -- ., отложить: stash, вернуться: reset --hard.

  • reset --hard удаляет незакоммиченное безвозвратно.

  • В сообщении пиши зачем, а не что.

  • Одна задача — один коммит.