Git-привычки для вайб-кодинга: как не терять рабочий код
Коротко
Вайб-кодинг с ИИ-агентами требует особой дисциплины работы с Git, чтобы не потерять код и эффективно управлять изменениями. Ключевые принципы — это создание отдельной ветки под каждую задачу, частые коммиты на каждом осмысленном шаге и обязательное ревью изменений перед слиянием в основную ветку. Такой подход обеспечивает безопасность основного кода и позволяет легко откатываться при неудачных экспериментах агента. Git становится не просто системой контроля версий, а вашей основной страховкой от ошибок ИИ.
Почему Git критичен в вайб-кодинге
ИИ-агенты, такие как Claude Code или Cursor, работают напрямую с вашей кодовой базой, внося изменения в файлы. Это значительно ускоряет разработку, но одновременно повышает риски: агент может внести нежелательные правки, сломать работающий код или увести проект в неправильном направлении. Без надёжной системы контроля версий, такой как Git, откат к предыдущему рабочему состоянию становится сложной или невозможной задачей. Git в вайб-кодинге — это не просто инструмент для совместной работы, а персональная «машина времени» и страховка от ошибок, позволяющая экспериментировать без страха потерять прогресс.
Git как «точки сохранения»
Представьте Git-коммиты как точки сохранения в игре. Если агент «сломал» игру, вы можете вернуться к последней точке сохранения. Чем чаще вы сохраняетесь, тем меньше прогресса теряете. Для вайб-кодинга это означает, что перед каждым значимым действием агента или после каждого успешно выполненного шага нужно делать коммит. Это позволяет легко откатить изменения, если агент пошёл не по плану, или если вы просто хотите попробовать другой подход.
Правила Git-гигиены для работы с ИИ-агентами
Безопасный и эффективный воркфлоу с ИИ-агентами строится на трёх основных правилах Git-гигиены. Эти правила призваны минимизировать риски и максимизировать вашу продуктивность, позволяя агенту работать свободно, но под вашим контролем.
1. Каждая задача — на своей ветке
Никогда не позволяйте агенту работать напрямую в основной ветке (main или master). Это золотое правило. Основная ветка должна всегда оставаться стабильной и рабочей. Вместо этого, для каждой новой задачи, функции или эксперимента создавайте отдельную ветку. Например, если вы просите агента реализовать форму логина, создайте ветку feat/login-form.
Почему это важно:
- Защита основного кода: Если агент допустит ошибку или внесёт нежелательные изменения, они останутся изолированными в отдельной ветке. Основной код проекта останется нетронутым и рабочим. ofis-ai.ru
- Лёгкий откат: В случае неудачи, вы можете просто удалить проблемную ветку, и ваш
mainбудет выглядеть так, будто ничего и не произошло. ofis-ai.ru - Параллельная работа: Если вы используете инструменты, поддерживающие
git worktree(например, Claude Code с флагом--worktree), вы можете запускать несколько агентов параллельно, каждый в своей изолированной рабочей папке и ветке. ofis-ai.ru
Как просить агента:
Заведи ветку feat/login-form и работай в ней.
По ходу делай коммиты на каждом осмысленном шаге.
В main не коммить — я сам смержу после ревью.
2. Частые коммиты по ходу работы
Коммиты — это ваши «точки сохранения». Делайте их часто, после каждого осмысленного и работающего изменения. Не ждите, пока агент закончит всю задачу целиком, чтобы сделать один большой коммит. Чем мельче коммиты, тем легче отслеживать изменения, откатываться и понимать историю проекта. insidepc.tech
Что считать «осмысленным шагом»:
- Реализация небольшой части функции (например, добавление поля в форму).
- Исправление ошибки.
- Рефакторинг отдельного модуля.
- Успешное прохождение теста.
Как просить агента:
Коммить на каждом осмысленном шаге, не одной кучей в конце.
Сообщения по сути: что изменил и зачем.
Перед коммитом показывай мне дифф, если правка крупная.
ИИ-агенты, такие как Claude Code и Cursor, умеют самостоятельно создавать осмысленные коммит-сообщения, часто даже в формате Conventional Commits. insidepc.tech
3. Проверка диффа перед слиянием в main
Это ваш последний рубеж обороны. Перед тем как слить ветку с изменениями агента в main, всегда внимательно просматривайте дифф (разницу между ветками). Агент может ошибаться, и это нормально. Ваша задача — убедиться, что в main попадает только качественный и проверенный код. ofis-ai.ru
Что проверять:
- Корректность кода: Соответствует ли он задаче? Нет ли логических ошибок?
- Побочные эффекты: Не сломал ли агент что-то в других частях проекта?
- Стиль и стандарты: Соответствует ли код вашим стандартам кодирования?
- Тесты: Прошли ли все тесты? Добавил ли агент новые тесты, если это было необходимо?
Если вы обнаружили проблемы, не сливайте ветку. Откатитесь к предыдущему коммиту в этой ветке, дайте агенту новые инструкции или исправьте проблему вручную. Только после полного ревью и уверенности в качестве можно сливать ветку в main.
Как откатываться: три уровня безопасности
В вайб-кодинге у вас есть несколько способов отката, которые работают на разных уровнях и обеспечивают максимальную гибкость.
| Метод отката | Уровень | Описание | Когда использовать |
|---|---|---|---|
git restore . |
Локальные изменения | Отменяет все несохранённые изменения в рабочей директории до состояния последнего коммита. | Агент сделал что-то не то, но вы ещё не сделали коммит. medium.com/@markchen69 |
git revert HEAD |
Последний коммит | Создаёт новый коммит, который отменяет изменения предыдущего коммита. История сохраняется. | Вы сделали коммит, но обнаружили ошибку. Безопасен для общих репозиториев. medium.com/@markchen69 |
git checkout <commit_hash> |
Произвольный коммит | Перемещает указатель HEAD на конкретный коммит, позволяя просмотреть или начать работу с этого состояния. | Нужно вернуться к определённой точке в истории для анализа или новой ветки. |
git checkout main && git branch -D bad-branch |
Удаление ветки | Полностью удаляет проблемную ветку, возвращаясь к main. |
Эксперимент агента на отдельной ветке полностью провалился, и проще начать заново. github.com/plamen5rov/vibe-coding-playbook |
/rewind (Claude Code) |
Внутри сессии | Откатывает файлы к предыдущему чекпойнту, созданному моделью внутри текущей сессии. | Агент только что сделал неудачную правку, и вы хотите быстро отменить её, не прибегая к Git-коммитам. ofis-ai.ru |
git reset --hard <commit_hash> |
Перезапись истории | Откатывает ветку к указанному коммиту, удаляя все последующие коммиты. Использовать с осторожностью! | Только в личных ветках, когда нужно полностью переписать историю. Не использовать в общих ветках. |
Связка /rewind и Git
Claude Code, помимо Git, предлагает свою внутреннюю систему чекпойнтов и команду /rewind. Это позволяет откатывать изменения внутри текущей сессии, даже если вы ещё не сделали Git-коммит. Это особенно удобно для быстрых итераций, когда агент делает несколько мелких правок подряд. ofis-ai.ru
/rewindспасает вас между Git-коммитами, внутри одной сессии работы с агентом.- Git спасает вас между сессиями, на длинной дистанции и обеспечивает надёжную историю проекта.
Используя эти два инструмента в связке, вы получаете максимальную защиту от потери работы и гибкость в экспериментах. ofis-ai.ru
Инструкции для агента: как поддерживать Git-гигиену
Ваш ИИ-агент может стать вашим союзником в поддержании Git-гигиены. Чётко формулируйте инструкции, чтобы агент сам следовал этим правилам.
Пример комплексного промпта для агента:
Начни новую задачу: реализуй форму регистрации пользователя.
1. **Создай новую ветку:** Назови её `feat/user-registration`. Все изменения делай только в этой ветке.
2. **Коммить часто:** После каждого логически завершённого шага (например, добавление поля, реализация валидации, написание теста) делай коммит. Сообщения коммитов должны быть информативными и отражать суть изменений.
3. **Не трогай `main`:** Никаких коммитов или слияний в `main` без моего явного указания. Я сам проведу ревью и смержу изменения.
4. **Показывай дифф:** Перед каждым крупным коммитом или когда считаешь задачу завершённой, покажи мне дифф, чтобы я мог его просмотреть.
Частые вопросы
Зачем мне ветки, если я работаю один?
Даже если вы работаете в одиночку, использование отдельных веток для каждой задачи с ИИ-агентом критически важно. Агент может внести непредсказуемые изменения или ошибки. Если это произойдёт в основной ветке (main), вам придётся тратить время на ручное исправление или сложный откат, что может привести к потере части работы. Отдельная ветка позволяет вам безопасно экспериментировать: если что-то пойдёт не так, вы просто удаляете ветку и начинаете заново, не затрагивая стабильный основной код. Это ваша персональная «песочница» для ИИ-агента. github.com/plamen5rov/vibe-coding-playbook
Как часто нужно делать коммиты?
Коммиты следует делать максимально часто, после каждого осмысленного и работающего изменения. Представьте, что каждый коммит — это «точка сохранения». Если вы делаете коммит после добавления каждого поля в форму, после реализации каждой функции валидации или после каждого пройденного теста, то в случае ошибки агента вы сможете откатиться к очень близкой и стабильной точке, минимизируя потери. Избегайте больших коммитов, которые объединяют множество несвязанных изменений, так как это затрудняет откат и понимание истории. insidepc.tech
Что такое дифф и почему его так важно проверять?
Дифф (от англ. difference) — это сравнение изменений между двумя версиями кода, например, между вашей рабочей веткой и основной веткой main. Проверка диффа перед слиянием изменений, сделанных ИИ-агентом, является обязательным этапом контроля качества. Агент может генерировать код с ошибками, неоптимальными решениями или даже «галлюцинациями». Внимательный просмотр диффа позволяет вам выявить эти проблемы до того, как они попадут в стабильную версию вашего продукта. Это ваша последняя возможность убедиться, что код соответствует вашим требованиям и не содержит скрытых дефектов. ofis-ai.ru
Мой агент сломал код, как мне откатиться?
Если агент сломал код, и вы ещё не сделали коммит, используйте git restore . для отмены всех несохранённых изменений в рабочей директории. Если вы уже сделали коммит с ошибкой, но работаете в своей ветке, вы можете использовать git revert HEAD для создания нового коммита, который отменит предыдущий. Это безопасный способ, сохраняющий историю. Если вся ветка с экспериментом агента оказалась неудачной, и вы хотите начать заново, просто удалите её командой git branch -D bad-branch после того, как переключитесь на main. Внутри сессии Claude Code вы также можете использовать команду /rewind для быстрого отката к предыдущему внутреннему чекпойнту. medium.com/@markchen69