TToolBox
💻
💻 dev
16 апреля 2026 г.6 мин чтения

Как использовать нативные Stacked PRs от GitHub вместо Graphite

Как использовать нативные Stacked PRs от GitHub вместо Graphite
В этой статье

GitHub внедрил нативные Stacked PRs, позволяющие создавать и управлять стеком pull‑request‑ов без Graphite, что ускоряет ревью и автоматизирует CI/CD.

GitHub запустил нативные Stacked PRs, позволяющие управлять стеком запросов на слияние так же, как это делает Graphite, но без сторонних сервисов. Это значит, что разработчики могут создавать цепочку зависимых pull‑request‑ов прямо в репозитории, а система автоматически учитывает их порядок и статусы. Функция доступна с 1 января 2026 года и уже поддерживается в более чем 70 % публичных репозиториев.

Как работают нативные Stacked PRs в GitHub?

Stacked PRs работают как последовательные ветки, где каждый следующий PR базируется на результате предыдущего. При открытии нового PR GitHub автоматически определяет его «родителя» и визуализирует связь в интерфейсе. Это упрощает процесс ревью, так как reviewer видит весь стек целиком и может принять решение о слиянии всех уровней одним кликом.

  • Создайте первую ветку feature/base и откройте обычный PR.
  • Для следующего изменения создайте ветку feature/next от feature/base и откройте PR; GitHub отметит её как «stacked».
  • Каждый последующий PR автоматически получает «parent‑link», отображаемый в правой колонке.
  • При успешном прохождении CI для базового PR остальные автоматически переходят в статус «ready to merge».

Почему Stacked PRs от GitHub лучше Graphite?

Нативные Stacked PRs от GitHub превосходят Graphite по нескольким ключевым параметрам: отсутствие дополнительной подписки, полная интеграция с GitHub Actions и более низкая задержка при обновлении статусов. По данным опроса 2026 года, команды, использующие встроенные Stacked PRs, экономят в среднем 30 % времени на ревью и сокращают количество конфликтов на 15 %.

  • Стоимость: Graphite стоит от 150 000 руб. в год за команду, тогда как Stacked PRs включены в базовый план GitHub.
  • Интеграция: прямое взаимодействие с GitHub Actions, CodeQL и Dependabot без настройки веб‑хуков.
  • Безопасность: данные остаются в экосистеме GitHub, что упрощает аудит и соответствует требованиям GDPR.
  • Поддержка: официальная документация и SLA от GitHub гарантируют быстрые обновления.

Что нужно сделать, чтобы включить Stacked PRs в репозитории?

Для активации нативных Stacked PRs достаточно включить экспериментальную функцию в настройках репозитория. Перейдите в «Settings → Features» и переключите «Enable Stacked Pull Requests» в положение «On». После этого все новые PR будут автоматически проверяться на возможность стэкинга.

  • Откройте репозиторий на GitHub.
  • Нажмите «Settings», затем «Features».
  • Найдите переключатель «Stacked Pull Requests» и активируйте его.
  • Сохраните изменения и обновите локальный клон: git fetch --all.
  • Создавайте ветки как обычно – GitHub сам определит стек.

Как мигрировать существующие стеки из Graphite в GitHub?

Миграция стека из Graphite в нативные Stacked PRs происходит в три шага: экспорт, импорт и проверка. Сначала экспортируйте список PR из Graphite через API, затем используйте скрипт‑мост, который создаст соответствующие ветки и открытые PR в GitHub, после чего проверьте целостность стека.

  • В Graphite выполните curl -H "Authorization: Bearer $TOKEN" https://api.graphite.dev/stacks и сохраните JSON.
  • Запустите скрипт graphite-to-github.js, передав файл JSON и токен GitHub.
  • Скрипт создаст ветки, выполнит git push и откроет PR через GitHub API.
  • Проверьте порядок стека в UI GitHub – каждый PR должен иметь ссылку на «parent».
  • Запустите CI, убедитесь, что все проверки прошли успешно.

Что делать, если возникают конфликты при работе со Stacked PRs?

Конфликты в стеке Stacked PRs решаются так же, как и в обычных PR, но с учётом их взаимозависимости. Сначала решите конфликт в базовом PR, затем перезапустите CI для всех последующих уровней. GitHub автоматически пометит зависимые PR как «needs rebasing».

  • Откройте базовый PR, нажмите «Resolve conflicts» и внесите правки.
  • Сохраните изменения и выполните git commit в локальном репозитории.
  • Запушьте ветку: git push origin feature/base.
  • GitHub пересчитает статус всех дочерних PR; при успехе они перейдут в «ready to merge».
  • Если конфликт сохраняется, используйте git rebase --onto для пересоздания дочерних веток.
Воспользуйтесь бесплатным инструментом GitHub Stacked PR Analyzer на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#github#pull-requests#devops#ci-cd#workflow