🛡️ Git: система контроля версий для разработчиков и AI

Ключевые тезисы

  • Git — это система «сохранений» для проектов, которая запоминает состояние всех файлов в любой момент времени.
  • Позволяет безопасно вносить изменения, экспериментировать и откатывать ошибки.
  • Критически важен для работы с AI-агентами, чтобы контролировать их изменения и не терять код.
  • Основной рабочий цикл: создать ветку → внести изменения → проверить → сохранить (коммит) → отправить на проверку (PR) → влить в основную версию.

🎮 Базовые концепции: коммит и репозиторий

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

Три базовые команды:

  1. git status — показывает изменённые файлы.
  2. git add . — добавляет все изменения в «коробку» для следующего коммита.
  3. git commit -m "описание" — создаёт коммит (сохранение). Описание должно быть понятным для человека.

☁️ GitHub, Git и gh: в чём разница?

  • Git — программа на компьютере, которая управляет историей версий локально.
  • GitHub — облачный сервис (как Google Drive) для хранения и совместной работы над git-репозиториями.
  • gh — CLI-инструмент (пульт) для работы с GitHub прямо из терминала. Им умеют пользоваться AI-агенты.

Основные команды для синхронизации: git push (отправить коммиты в облако), git pull (забрать изменения из облака).

🌿 Ветки и рабочий процесс

В проектах обычно есть две главные ветки:

  • Production (main/master/prod) — то, что видят живые пользователи. Ломать нельзя.
  • Develop (staging/test) — тестовая версия для команды. Сюда попадают все нововведения.

Правильный путь любой фичи:

  1. Создать от develop свою ветку под задачу: git switch -c feature-dark-theme.
  2. Вести разработку в этой ветке.
  3. Через Pull Request (PR) запросить вливание изменений в develop.
  4. После проверки и тестов — влить (merge) в develop.
  5. Через аналогичный PR из develop влить изменения в production (релиз).

Pull Request (PR) — запрос на вливание изменений. На странице PR видна разница кода (добавлено зелёным, удалено красным), идут обсуждения и автоматические проверки.

🏢 Практика в разных контекстах

  • Личный проект: Можно обойтись веткой main и ветками для задач. Полезно настроить GitHub Actions для автоматического запуска тестов и сборки при каждом push. Это экономит токены AI-агентов.
  • Стартап: Используется полная схема с develop и production. PR перед вливанием просматривает хотя бы один человек. Иногда в production пушат напрямую («горит»), что рискованно.
  • Крупная компания: production заблокирован для прямых пушей. PR проходит конвейер проверок: автотесты, безопасность, AI-ревью, одобрение одним-двумя людьми. В случае ошибки в production делают git revert (новый коммит, отменяющий плохой), а не стирают историю.

🤖 Ключевые правила для работы с AI

  1. Коммит перед каждым большим запросом — это «сохранение перед боссом». В случае неудачи можно откатиться: git restore .
  2. Нейронка не помнит, а git помнит. Любой код, попавший в коммит, можно восстановить из истории (git log).
  3. Всегда смотри git diff перед коммитом. AI любит «заодно» изменить то, о чём его не просили.
  4. Секреты (ключи, пароли) никогда не хранить в git. Файлы типа .env нужно добавлять в .gitignore.

🧠 Работа с несколькими AI-агентами

Несколько агентов в одной папке — путь к хаосу. Решение — git worktree.

git worktree — создаёт дополнительную рабочую папку проекта с общей историей, но изолированными файлами и веткой.

Рабочий процесс:

  • Для каждой задачи создаётся отдельная папка (worktree) со своей веткой: git worktree add ../dark-theme feature-dark-theme.
  • Каждый агент работает в своей «комнате», не мешая другим.
  • Агенты пушат свои ветки и создают PR в develop.
  • После завершения задачи папка удаляется: git worktree remove. Ветка и коммиты остаются в истории.
  • Если два агента изменили одно место, git покажет конфликт при слиянии, который нужно разрешить вручную или поручить агенту.

Главное правило: одна задача = одна ветка = одна папка (worktree).

Выводы

  • Git — фундаментальный инструмент для современной разработки, особенно в эпоху AI.
  • Он обеспечивает контроль, безопасность и возможность отката любых изменений.
  • Стандартный цикл: git pull → создать ветку → работа с AI → git diff → git commit → git push → создать PR → дождаться зелёной проверки → влить изменения.
  • Настройка автоматических проверок (GitHub Actions) и изолированных рабочих окружений (git worktree) значительно повышает эффективность и надёжность работы с AI-агентами.