GitHub запустил нативные Stacked PRs — альтернатива Graphite
GitHub в Private Preview выкатил нативные stacked PRs: stack map в UI, cascading rebase, открытый CLI gh stack и интеграция с ИИ-агентами через Skills.
Новости TprogerЕсли ваши пулл-реквесты разрастаются до 2000 строк и ревьюеры тонут в диффе — у GitHub теперь появился родной способ разбить большую задачу на стэк маленьких PR. Stacked PRs пока в Private Preview: чтобы получить UI со стек-картой и cascading rebase, нужно записаться в waitlist. Но открытый CLI-клиент gh stack уже можно ставить — авторы пишут, что в нынешнем виде он работает против репозитория только если для вас включили preview.
Раньше стэки делали сторонними инструментами: облачный сервис Graphite, консольные клиенты ghstack (от Meta) или spr. Все они симулировали стэки поверх обычного GitHub и ломались на ребейзах, merge queue и branch protection. Нативная реализация решает именно эти проблемы — о том, что с ней не так на старте и кому есть смысл пробовать прямо сейчас, разбираемся ниже.
Ключевые выводы
- Статус: Private Preview, нужен waitlist для репозитория
- Что внутри платформы: stack map в UI, cascading rebase, корректная работа branch protection и merge queue
- CLI: расширение
gh stackоткрыто в гитхабе, алиасgs— команды init, add, push, submit - ИИ-агенты:
npx skills add github/gh-stackучит Claude Code и Codex разбивать задачи на слои - Кому идти сразу: командам с регулярными PR 1500+ строк или большими диффами от ИИ-ассистентов
- Кому подождать: тем, кто уже на Graphite или делает в основном PR на 200 строк
Что такое stacked PRs
Stacked PR (стек пулл-реквестов) — это цепочка PR, где каждый таргетит не main, а ветку PR ниже. Вместо одного огромного пулл-реквеста с пятью разными по смыслу изменениями вы делаете пять маленьких PR, которые читаются независимо и строятся один на другом.
Пример. Вы делаете фичу, которая требует нового API, роутов и фронтенда. Обычно это превращается в PR на 2000 строк, где ревьюер сначала вникает в API, потом забывает про него, когда смотрит роуты, путается в фронтенде и в итоге пишет «LGTM, не читал». Со стэком:
- PR #1 — auth-layer: новый API-слой (200 строк, одна тема)
- PR #2 — api-routes: роуты на базе auth-layer, таргетит ветку PR #1
- PR #3 — frontend: UI на базе роутов, таргетит ветку PR #2
Ревьюеры читают по одному PR, дают фидбек по конкретной теме, и вы мержите всё разом, когда каждый слой одобрен. Подход называется «small PR culture» — мы уже разбирали, почему команды переосмысляют формат пулл-реквестов.
Что GitHub сделал на уровне платформы
Сторонние тулы уже давно давали стек на Git-уровне, но работали поверх обычного GitHub и ломались на ребейзах, merge queue и branch protection. Нативная поддержка закрывает эти углы:
- Stack map в UI — навигация между PR прямо в интерфейсе, видно статус каждого слоя сразу
- Cascading rebase — ребейзнули PR внизу стэка, один клик — и все PR выше автоматически ребейзятся
- Branch protection — правила (ревью-апрув, passing checks) применяются против финальной целевой ветки (обычно
main), а не против промежуточной - CI — прогоняется для каждого PR в стэке так, будто он уже таргетит финальную ветку (не промежуточную)
- Merge queue — очередь GitHub, которая последовательно ребейзит и мерджит PR. Теперь понимает стэки: можно ставить в очередь как весь стэк, так и его часть
- Частичный мердж стэка — если одобрены только нижние два PR, можно слить их, а верхние оставить на доработку
- API — управление стэками через GraphQL и REST, интеграция с вашими CI-тулами
CLI gh stack: что внутри
CLI — опциональное расширение к стандартному gh. Сокращает рутину: не надо вручную создавать ветки, проставлять base, делать серию rebase. Базовые команды следуют той же логике, что и современные workflow поверх Git — работать мелкими слоями и синхронизироваться автоматически.
Базовый сценарий от GitHub:
Дальше — работа как с обычными PR, только с визуальной картой стэка. Хотите ребейзнуть auth-layer на свежий main — gs rebase, и вышележащие слои автоматически подтягивают новую базу.
Интеграция с ИИ-агентами
GitHub явно заточил stacked PRs под сценарий совместной работы с ИИ-агентами. Skills — это документированный формат инструкций для кодовых ассистентов: одна папка с markdown-файлами и примерами, которую агент читает и использует как расширение своего поведения. Команда npx skills add github/gh-stack добавляет такой скилл для Claude Code, OpenAI Codex и других агентов, которые поддерживают формат.
Скилл учит агента двум вещам: брать большую задачу и заранее разбивать её на слои (вместо того чтобы генерировать один огромный коммит), и работать поверх существующего стэка — добавлять новые слои или чинить нижние. Это решает одну из главных проблем ИИ-разработки: агент делает «всё сразу», ревью превращается в кошмар, а откатить часть изменений невозможно. Похожая мотивация была у Copilot-агента, который собирает PR сам, но без стэков он быстро упирается в размер диффа.
Как попасть в Private Preview
- Зайти на github.github.com/gh-stack и записаться в waitlist (кнопка «Sign up for the waitlist»)
- Дождаться, пока GitHub включит фичу для вашей организации или репозитория — точных сроков они не называют
- Включить в настройках репо: появится новая секция Stacked PRs в Settings → Pull Requests
- Поставить расширение CLI:
gh extension install github/gh-stack
CLI-расширение распространяется свободно — его можно поставить уже сейчас из открытого репозитория github/gh-stack. Но README расширения предупреждает: без включённого Private Preview на стороне сервера команды gs push и gs submit упрутся в API, который отвечает 404 или ошибкой доступа. Поставить CLI и посмотреть gh stack --help можно, реально прогонять стэки — только после активации preview в репозитории.
Зачем это, если есть Graphite, ghstack и spr
Существующие решения делятся на две группы. Graphite — коммерческий сервис: у него свой веб-интерфейс, бэкенд и платные тарифы, он синхронизирует стэк через GitHub API. Ghstack (Meta) и spr (Cord) — консольные клиенты: держат локальный граф стэка и пушат PR напрямую. Общее у них одно — стэк живёт где-то вне GitHub, а синхронизируется с ним через API.
Из-за этого все они ломаются в одном классе сценариев: когда кто-то из команды мержит через веб-интерфейс, делает force-push из терминала или запускает merge queue, локальный граф CLI или состояние сервиса Graphite разъезжаются с реальностью — и стэк приходится чинить руками.
Нативная реализация снимает этот класс проблем: стэк живёт на стороне сервера GitHub, UI и CLI синхронизируются с ним автоматически. Branch protection, merge queue, CI — всё работает без костылей. Для базового сценария «разбить большую диффу на стэк и слить её» стороннее звено становится необязательным.
У сторонних тулов остаётся ниша: автогенерация описаний PR через ИИ у Graphite, интеграция с Jira и Linear, аналитика по времени ревью — всё это GitHub не закрывает. Если вы уже платите Graphite за эту часть — ничего не сломается, тулы совместимы со Stacked PRs на уровне API.
Для российских разработчиков: GitHub работает с ограничениями для аккаунтов, подключённых из РФ с 2022 года — возможны блокировки при создании организаций и проблемы с оплатой приватных репозиториев. Нативные Stacked PRs становятся особенно полезны, если переходить на GitFlic, GitVerse или self-hosted GitLab, где аналогов стэков на платформенном уровне пока нет — но CLI-клиенты ghstack и spr работают и на них.
FAQ
Когда фича станет доступна всем?
Точных сроков GitHub не называет. Private Preview обычно длится несколько месяцев; Public Preview и общий релиз — позже. Пока — только через waitlist и выборочное включение для организаций.
Нужен ли gh stack CLI?
Нет, фича работает и через чистый Git плюс UI. CLI упрощает рутину (автосоздание веток, правильные base, push всех слоёв одной командой), но не обязателен.
Работает ли merge queue со стэками?
Да. Можно поставить в очередь мерджа как весь стэк, так и его нижнюю часть — например, нижние два PR из пяти, если только они одобрены. GitHub сам разрулит порядок и ребейзнет оставшиеся PR после мерджа нижних слоёв.
А как это с Graphite, spr, ghstack?
Сторонние тулы продолжают работать — они не конфликтуют со Stacked PRs на уровне API. Но большую часть их задач GitHub теперь решает нативно. Для новых команд проще начать с gh stack; если вы уже на Graphite — переезжать имеет смысл после выхода фичи из Private Preview.
Что с ИИ-агентами?
Команда npx skills add github/gh-stack ставит Skills-скилл для Claude Code, Codex и других агентов — они начинают разбивать большие изменения на слои и работать с существующими стэками. Формат Skills открытый, подойдёт любому агенту, который его поддерживает.
Доступно ли из России?
Сама фича — да, на любом аккаунте, где организации и репозитории не ограничены со стороны GitHub. Но waitlist и включение preview — на усмотрение GitHub, и для санкционных аккаунтов возможны отказы. CLI-расширение ставится без ограничений, но, как указано выше, без preview на сервере работать не будет.
Что делать прямо сейчас
Если ваша команда регулярно сталкивается с ревью на 1500+ строк, PR, которые висят неделями, или большими диффами от ИИ-ассистентов — встаньте в waitlist, поставьте CLI gh extension install github/gh-stack и подготовьтесь к следующей крупной задаче. Пока ждёте активации — попробуйте разбить текущую большую задачу руками через последовательные PR с правильными base-ветками: это работает и в обычном GitHub, а CLI потом сделает то же самое автоматически.
Если вы уже на Graphite и довольны — переезд имеет смысл после выхода фичи из Private Preview и появления миграционного сценария. Небольшим командам с PR на 200 строк фича пока не нужна: инвестиции в стэки окупаются там, где большие задачи — частая история.
Нативная поддержка закрывает больную для крупных команд зону: большие изменения теперь можно разбивать без костылей, а ревью — делать по смыслу, а не по количеству строк.
Источники: официальный анонс GitHub Stacked PRs, репозиторий CLI-расширения, обсуждение на Hacker News.