Занятие 32. Graphite (gt): стекированные PR

🎁 Бонус-урок ⏱️ ~50 мин 🎯 Сложность: Продвинутая
#git #graphite #gt #stacked-pr #rebase #code-review
⚠️ Проверить по документации. Этот урок — дополнение вне лекций курса. Graphite (gt) — внешний инструмент со своим темпом развития. Команды и флаги сверяйте с gt --help и graphite.com/docs.

⚡ Кратко: суть занятия

Graphite (gt) — надстройка над Git для работы со стеками маленьких веток и pull request'ов. Вместо одной большой ветки — цепочка мелких, каждая со своим PR. Ревью идёт по одной логической части.

  • Создать ветку стека: gt create feat/x -a -m "msg"
  • Навигация: gt up / gt down / gt top / gt bottom
  • Поправить низ + обновить весь стек: gt modify -a (авто-restack)
  • Отправить PR стека: gt submit --stack (gt ss)
  • Синхронизация с main: gt sync
Внимание: gt submit делает force-push веток стека. Это нормально для своих feature-веток, но не для общего main.

📖 О чём это занятие

Когда задача большая, она часто превращается в один pull request на 500+ строк, который никто не хочет ревьюить. Подход stacked PRs («стекированные PR») предлагает дробить задачу на цепочку маленьких зависимых веток: модель БД → сервис → API → тесты. Каждая ветится от предыдущей, у каждой — свой небольшой PR. Graphite автоматизирует самую болезненную часть этого подхода — перебазирование (rebase) всей цепочки при изменении нижних веток.

Что изучаем

  • Что такое стек веток и зачем дробить большие PR
  • Модель Graphite: trunk, родитель/потомок, метаданные стека
  • Базовый цикл: createmodifysubmitsync
  • Навигация по стеку и автоматический restack
  • Как gt соотносится с чистым Git (rebase, push)

📚 Что повторить перед изучением

🎯 Что дальше