Об этом проекте

gh stack — это расширение GitHub CLI для управления стекированными ветками и пул-реквестами. Стекированные PR разбивают большое изменение на цепочку небольших, удобных для ревью пул-реквестов, которые надстраиваются друг над другом; этот инструмент автоматизирует создание веток, поддержание веток в состоянии rebase, установку правильных базовых веток PR и навигацию между слоями. Установка выполняется через `gh extension install github/gh-stack` и требует GitHub CLI v2.0+. Для ИИ-агентов программирования можно установить дополнительный skill. Базовая модель: стек — это упорядоченный список веток, каждая из которых основана на ветке ниже, а нижняя основана на trunk-ветке (обычно main). Метаданные стека хранятся локально в `.git/gh-stack` в формате JSON, а состояние rebase — в отдельном файле. Команды включают: - init: инициализировать стек, при необходимости подключив существующие ветки, с настраиваемым trunk. - add: создать новую ветку поверх стека, с опциями для индексации и коммита изменений. - checkout: переключиться на стек по номеру стека, номеру PR, URL PR или имени ветки, включая интерактивный выбор локальных и удалённых стеков. - rebase: выполнить fetch и каскадные rebase по всему стеку, с областью downstack/upstack/no-trunk и обработкой continue/abort. - modify: интерактивный терминальный интерфейс для удаления, объединения, вставки, переименования и переупорядочивания веток. - sync: выполнить fetch, согласовать удалённый стек, fast-forward trunk, каскадный rebase, push, синхронизировать состояние PR, связать стек и при необходимости удалить слитые ветки. - push: отправить активные ветки с проверками force-with-lease для каждой ветки. - submit: отправить ветки и создать или обновить PR и стек GitHub, с интерактивным редактором или автоматическим режимом. - link: создать или обновить стек GitHub по именам веток или номерам PR без локального отслеживания, что полезно с другими локальными инструментами для работы с ветками. - merge: слить один или несколько стекированных PR в операции «всё или ничего», с опциями метода слияния и учётом очереди слияния. - view: показать ветки стека, порядок, ссылки на PR и последние коммиты, с кратким выводом и выводом JSON. - unstack/delete: удалить стек из локального отслеживания и/или с GitHub. - Команды навигации (up, down, top, bottom) перемещают между ветками в текущем стеке. В README подробно описаны флаги, примеры, предварительные условия и поведение, например обработка расхождений и взаимодействие с очередью слияния.