Skip to main content

Команды CLI с накоплением запросов на вытягивание

Найдите каждую команду, флаг и код выхода для gh stack расширения.GitHub CLI

Примечание.

Эта функция доступна в публичном предварительном просмотре и может измениться.

Расширение gh stack для GitHub CLI создания стека запросов на вытягивание из локального репозитория и управления ими. Общие сведения о стеках см. в разделе Запросы на вытягивание с накоплением.

Installation

gh extension install github/gh-stack

Для расширения требуется GitHub CLI (gh) версия 2.0 или более поздняя.

Примечание.

Расширение gh stack использует GitHub CLI проверку подлинности. Если вы еще не прошли проверку подлинности, выполните команду gh auth login.

Сводка по командам

CommandPurpose
gh stack initИнициализация нового стека в текущем репозитории.
gh stack addДобавьте новую ветвь поверх текущего стека.
gh stack viewПросмотр текущего стека.
gh stack checkoutПроверьте стек по номеру стека, номеру запроса на вытягивание, URL-адресу запроса на вытягивание или имени ветви.
gh stack modifyИнтерактивно переструктурировать текущий стек.
gh stack unstackУдалите стек из локального отслеживания и разместите его.GitHub
gh stack submitОтправьте все ветви, а затем создайте или обновите запросы на вытягивание и стек GitHub.
gh stack syncПолучение, перебазировка, отправка и синхронизация состояния запроса на вытягивание в одной команде.
gh stack rebaseИзвлеките из удаленного узла и выполните каскадную перебазу по стеку.
gh stack pushОтправьте активные ветви в текущем стеке в удаленный.
gh stack linkСвязывание запросов на вытягивание в стек GitHub без локального отслеживания.
gh stack mergeОбъединение одного или нескольких запросов на вытягивание с накоплением одновременно.
gh stack switchИнтерактивный переход на другую ветвь в стеке.
gh stack upДвигайтесь к верхней части стека, от магистрали.
gh stack downДвигайтесь вниз к нижней части стека, в сторону магистрали.
gh stack topПерейдите в верхнюю часть стека.
gh stack bottomПереход к нижней части стека.
gh stack trunkПерейдите в магистральную ветвь.
gh stack aliasСоздайте короткий псевдоним команды, чтобы можно было ввести меньше.
gh stack feedbackПоделитесь отзывом о gh stack расширении.

Управление стеком

gh stack init

Инициализация нового стека в текущем репозитории.

gh stack init [flags] [branches...]

Инициализирует новый стек локально. В интерактивном режиме (без аргументов) командная строка для имени ветви и предлагает использовать текущую ветвь в качестве первого слоя.

При предоставлении явных имен ветвей существующие ветви применяются автоматически и создаются отсутствующие ветви. Магистраль по умолчанию используется в ветви по умолчанию репозитория, если вы не переопределите ее.--base

Команда включается git rerere автоматически, чтобы разрешения конфликтов запоминались в перебазах.

FlagОписание
-b, --base <branch>Магистральная ветвь для стека (по умолчанию используется ветвь репозитория по умолчанию)

Примеры:

# Interactive — prompts for branch names
gh stack init

# Non-interactive — specify first branch upfront
gh stack init feature-auth

# Use a different trunk branch
gh stack init --base develop feature-auth

# Adopt or create multiple branches at once
gh stack init feature-auth feature-api feature-ui

gh stack add

Добавьте новую ветвь поверх текущего стека.

gh stack add [flags] [branch]

Создает новую ветвь в текущей head, добавляет ее в верхнюю часть стека и проверяет ее. Эту команду необходимо выполнить во время самой верхней ветви стека. Если имя ветви не указано, командная строка для одной из них не указана.

При необходимости можно выполнить изменения и создать фиксацию в рамках add потока. Если вы предоставляете -m без явного имени ветви, имя ветви создается автоматически в формате даты и slug, например 03-24-add_login.

FlagОписание
-A, --allЭтап всех изменений, включая незаслеченные файлы. Требует использования -m.
-u, --updateЭтап изменения только отслеживаемых файлов. Требует использования -m.
-m, --message <string>Создание фиксации с этим сообщением перед созданием ветви

Примечание.

-A и -u являются взаимоисключающими.

Примеры:

# Create a branch by name
gh stack add api-routes

# Prompt for a branch name interactively
gh stack add

# Stage all changes, commit, and auto-generate the branch name
gh stack add -Am "Add login endpoint"

# Stage only tracked files, commit, and auto-generate the branch name
gh stack add -um "Fix auth bug"

# Commit already-staged changes and auto-generate the branch name
gh stack add -m "Add user model"

# Stage all changes, commit, and use an explicit branch name
gh stack add -Am "Add tests" test-layer

# Stage only tracked files, commit, and use an explicit branch name
gh stack add -um "Update docs" docs-layer

gh stack view

Просмотр текущего стека.

gh stack view [flags]

Отображает все ветви в стеке, их упорядочение, ссылки запроса на вытягивание и последнюю фиксацию с относительной меткой времени. Выходные данные передаются через пейджер, который учитывает GIT_PAGER или PAGERпо умолчанию используется less -R.

FlagОписание
-s, --shortКомпактные выходные данные (только имена ветвей)
--jsonВыходные данные стека в формате JSON

Примеры:

gh stack view
gh stack view --short
gh stack view --json

gh stack checkout

Проверьте стек по номеру стека, номеру запроса на вытягивание, URL-адресу запроса на вытягивание или имени ветви.

gh stack checkout [<stack-number> | <pr-number> | <pr-url> | <branch>]

Голый номер интерпретируется сначала как стек или номер запроса на вытягивание. Это идентификаторы с областью действия репозитория, отображаемые в пользовательском интерфейсе GitHub . Если число не совпадает, он выполняется в качестве имени ветви.

При ссылке на удаленный стек команда извлекает стек GitHub, извлекает ветви и настраивает стек локально. Если стек уже существует локально и соответствует, команда переключается в ветвь. Если локальные и удаленные стеки имеют разные композиции, вам будет предложено устранить конфликт.

При указании имени ветви команда разрешает ее только для локально отслеживаемых стеков.

При выполнении команды без аргументов в интерактивном терминале открывается список средств выбора, доступных для поиска, каждый стек, отслеживаемый локально, и стеки, которые существуют только в GitHub. В каждой строке показан номер стека, его нижняя и верхняя ветвь, базовая ветвь, строка состояния, сводка о том, сколько запросов на вытягивание объединяются, открываются, закрываются или еще не отправляются, и независимо от того, доступен ли стек локально или только в удаленном режиме. Фильтрация с помощью вкладок "Все", "Локальный" и "Удаленный " или "Тип / " для поиска. Полностью объединенные стеки опущены. Выбор клонирования удаленного стека локально перед переключением на него.

Примеры:

# Check out a stack by its stack number
gh stack checkout 7

# Check out a stack by pull request number
gh stack checkout 42

# Check out a stack by pull request URL
gh stack checkout https://github.com/owner/repo/pull/42

# Check out a stack by branch name (local only)
gh stack checkout feature-auth

# Interactive — pick from all available stacks (local and remote)
gh stack checkout

gh stack modify

Интерактивно переструктурировать текущий стек.

gh stack modify [flags]

Открывает интерактивный пользовательский интерфейс терминала для реструктуризации стека. Все изменения выполняются в интерфейсе и применяются вместе при нажатии клавиш CTRL+S. Нельзя изменять ветви из объединенных запросов на вытягивание.

FlagОписание
--continueПродолжить после разрешения конфликтов
--abortОтмените сеанс изменения и восстановите стек в его состоянии перед выполнением команды

Предпосылки

Перед открытием интерфейса команда проверяет следующие условия:

  1. Необходимо локально извлечь активный стек.
  2. Рабочее дерево должно быть чистым, без незафиксированных изменений.
  3. Перебаза не выполняется.
  4. Запрос на вытягивание в стеке не помещается в очередь для слияния.
  5. Журнал фиксаций должен быть линейным, без фиксаций слиянием и без разных ветвей.

Operations

ОперацияКлючEffect
Drop
xУдалите ветвь и ее фиксации из стека. Сохраняется локальная ветвь и связанный запрос на вытягивание.
Свернуть вниз
дПоглощает фиксации в ветвь ниже, в сторону магистрали. Свернутая ветвь удаляется из стека.
Свернуть вверх
uПоглощает фиксации в ветвь выше, от магистрали. Свернутая ветвь удаляется из стека.
Вставка ниже
iВставьте новую пустую ветвь под курсором в сторону магистрали.
Вставка выше
ЯВставьте новую пустую ветвь над курсором, вдали от магистрали.
Переместить вниз
Shift+):Переупорядочение ветви вниз, в сторону магистрали.
Переместить вверх
Shift+^Переупорядочение ветви вверх, от магистрали.
Rename
rПереименуйте ветвь с помощью встроенного запроса.
Undo
zОтмените последнее поэтапное действие.

Этап применения

При нажатии клавиш CTRL+S поэтапное изменение применяется путем переименования ветвей, вставки новых ветвей, свертывания или удаления ветвей и выполнения каскадной повторной базы для создания журнала линейной фиксации с нужным состоянием стека.

Если возникает конфликт перебазы, можно:

  • Устраните конфликты, разверните файлы, а затем запустите gh stack modify --continue.
  • Выполните gh stack modify --abort , чтобы прервать операцию и восстановить стек до предыдущего состояния.

После изменения

Если вы уже создали стек запросов GitHubна вытягивание, выполните отправку gh stack submit обновленных ветвей и повторно создайте стек. Старый стек автоматически заменяется.

Примеры:

# Open the interactive modify interface
gh stack modify

# Continue after resolving a conflict
gh stack modify --continue

# Abort and restore to the previous state
gh stack modify --abort

gh stack unstack

Удалите стек из локального отслеживания и разместите его.GitHub Эта команда также доступна как gh stack delete.

gh stack unstack [<stack-number>] [flags]

Без аргументов команда нацелена на активный стек, который является стеком, который содержит извлеченную в настоящее время ветвь. Он отменяет стек GitHub и удаляет локальное отслеживание.

Укажите номер стека, идентификатор, отображаемый в пользовательском интерфейсе GitHubстека, чтобы отменить стек. Это работает из любого места в репозитории, независимо от того, извлекается ли стек локально, так как стек не взломан непосредственно через GitHub API. Если стек также доступен локально, его локальное отслеживание также удаляется.

Запросы на вытягивание, объединенные, объединения или очереди для слияния не могут быть удалены из стека и остаться частью стека GitHub . При удалении каждого запроса на вытягивание стек растворяется и удаляется любое локальное отслеживание. Если некоторые запросы на вытягивание остаются в стеке, стек сохраняется и локальное отслеживание( если таковые есть) не изменяется. Используйте --local для пропуска удаленной операции и удаления только локального отслеживания.

Эта команда полезна при необходимости реструктурировать стек, удалив ветвь, вставляя ветвь, переупорядочение ветвей, переименование ветвей или внесение других крупных изменений. После отмены кэширования используйте gh stack init для повторного создания стека с нужной структурой. Существующие ветви принимаются автоматически.

FlagОписание
--localУдалите только стек локально, сохраняя его в локальном режиме. GitHub

Примеры:

# Unstack the current stack on GitHub and remove local tracking
gh stack unstack

# Unstack a specific stack by its number
gh stack unstack 7

# Only remove local tracking
gh stack unstack --local

Удаленные операции

gh stack submit

Отправьте все ветви, а затем создайте или обновите запросы на вытягивание и стек GitHub.

gh stack submit [flags]

Создает запрос на вытягивание для каждой ветви в стеке, принудив ветви к удаленному. После создания запросов submit на вытягивание автоматически создает стек GitHub для связывания запросов на вытягивание. Если стек уже существует GitHub, например из предыдущей отправки, новые запросы на вытягивание добавляются в существующий стек.

Если каждый запрос на вытягивание в стеке уже был объединен, этот стек завершен и не может быть расширен. В этом случае submit автоматически запускает новый стек, корневый стек для не объединенных ветвей и создает его в GitHub, оставляя объединенный стек без изменений.

В интерактивном терминале submit открывается полноэкранный редактор на одном экране.

  • Левая панель. Каждая ветвь без запроса на вытягивание включена по умолчанию. Отмените выбор, который вы не хотите отправить с помощью ctrl+X. Так как каждый запрос на вытягивание строится в ветви под ним, отменяя выбор ветви, также отменяет выбор тех, от которых он размещен, и повторно включает ветвь повторно включает те из них, от которых она зависит. Ветви, у которых уже есть запрос на вытягивание, открытые, черновики, очереди или объединенные, отображаются для контекста, но блокируются. Измените их в Интернете.
  • Правая панель. Для ориентированной ветви черновики заголовка и описания и выберите, открывается ли запрос на вытягивание, готовый к просмотру или в виде черновика. Описание предварительно заполнено из шаблона запроса на вытягивание репозитория или фиксаций с предварительным просмотром markdown и escape-файлом $EDITOR . Фокусирование заблокированной ветви показывает карточку только для чтения с ссылкой на запрос на вытягивание. Нажмите кнопку o , чтобы открыть ее в браузере.

Нажмите клавиши CTRL+S , чтобы отправить все включенные запросы на вытягивание одновременно. Редактор поддерживает ввод клавиатуры и мыши. Передайте --autoили запустите команду в неинтерактивном терминале, например CI, чтобы пропустить редактор и использовать автоматически созданные заголовки.

Если ветви уже имеют открытые запросы на вытягивание, но нет стека GitHub, у вас есть возможность связать запросы на вытягивание в стек с помощью ctrl+B.

В редакторе новые запросы на вытягивание по умолчанию готовы к просмотру. Вы можете перевернуть любой запрос на вытягивание для черновика с помощью переключателя. При использовании --autoновые запросы на вытягивание создаются как черновики, если вы не передаете --open.

FlagОписание
--autoПропустить редактор и использовать автоматически созданные заголовки запросов на вытягивание
--openСоздайте новые запросы на вытягивание как готовые для проверки, а не черновики, и пометьте существующие запросы на вытягивание как готовые для проверки
--remote <name>Удаленный для отправки (по умолчанию автоматически обнаруженный удаленный)

Примеры:

gh stack submit
gh stack submit --auto
gh stack submit --open

gh stack sync

Получение, перебазировка, отправка и синхронизация состояния запроса на вытягивание в одной команде.

gh stack sync [flags]

Синхронизирует весь стек.

  1. Принести. Извлекает последние изменения из origin.
  2. Согласование удаленного стека. Зеркально отражает стек локально GitHub . Когда запросы на вытягивание были добавлены в стек GitHub, чтобы удаленный был впереди локального стека, их ветви вытягиваются и добавляются в локальный стек автоматически. Если локальные и удаленные стеки действительно разошлись, например, так как вы добавили ветвь локально, а различные запросы на вытягивание были добавлены в стек GitHub, вам будет предложено устранить разницу. См. раздел "Разверждаемые стеки". В неинтерактивном терминале расхождение прерывает синхронизацию, и ничего не отправляется или обновляется.
  3. Быстрый вперед магистрали. Переадресовывает ветвь магистрали, чтобы соответствовать удаленному. Этот шаг пропускается, если ветви разошлись.
  4. Каскадная перебаза. Перебазирует все ветви стека на обновленные родители, но только если магистраль перемещена. Если обнаружен конфликт, все ветви восстанавливаются в исходном состоянии, и рекомендуется запускать gh stack rebase их для интерактивного разрешения конфликтов.
  5. Нажмите. Отправляет все ветви, используя --force-with-lease , если произошла перебаза.
  6. Синхронизация запросов на вытягивание. Синхронизирует состояние запроса на вытягивание из GitHub и сообщает о состоянии каждого запроса на вытягивание.
  7. Синхронизация стека. Связывает открытые запросы на вытягивание стека в стек GitHub, создавая объект удаленного стека, если он еще не существует, или обновляет его, если он частично сформирован. Это происходит только в том случае, если существуют два или более запросов на вытягивание. Синхронизация никогда не открывает запросы на вытягивание. Используйте gh stack submit для этого.
  8. Чернослив. В интерактивных терминалах предлагается удалить локальные ветви для объединенных запросов на вытягивание. Используется --prune для автоматического обрезки.

Чистое удаленное обновление, в котором запросы на вытягивание добавляются поверх локального стека, вытягиваются автоматически без запроса, поэтому sync безопасно выполняться в службе автоматизации. Синхронизация запрашивает только те стеки, когда стеки действительно разошлись.

Разверждаемые стеки

Если ни один стек не является чистым префиксом другого, например, так как вы добавили ветвь локально, а отдельные запросы на вытягивание были добавлены в один и тот же стек GitHub, синхронизация не может объединить два автоматически. В интерактивном терминале он предлагает три варианта.

  • Используйте удаленный стек в качестве источника истины. Заменяет состав локального стека удаленным, извлекая отсутствующие ветви. Если вы находились в ветви, в которую удаленный стек больше не содержится, вы перемещаесь в ближайшую выживающую ветвь. Для этого требуется чистое рабочее состояние без незафиксированных изменений.
  • Удаление стека GitHubв . Удаляет объект GitHub стека и останавливает синхронизацию. Запросы на вытягивание и локальные ветви не связаны, и удаляется только стек GitHub . Повторно создайте стек с gh stack submitпомощью первого запуска gh stack modify , если вы хотите изменить ее структуру. Это способ сопоставления GitHub локального стека, так как submit, в отличие syncот этого, также создает запросы на вытягивание для любых ветвей, которые вы еще не отправили.
  • Отмена. Прерывает синхронизацию без отправки ветвей или обновления запросов на вытягивание.

В неинтерактивном терминале расхождение прерывает синхронизацию, завершается успешно, без отправки ветвей или обновления запросов на вытягивание. Разрешите его путем отмены размещения и повторного восстановления стека.

FlagОписание
--remote <name>Удаленный для получения и отправки (по умолчанию для автоматического обнаружения удаленных)
--pruneУдаление локальных ветвей для объединенных запросов на вытягивание

Примеры:

gh stack sync

# Sync and automatically prune merged branches
gh stack sync --prune

gh stack rebase

Извлеките из удаленного узла и выполните каскадную перебазу по стеку.

gh stack rebase [flags] [branch]

Извлекает последние изменения, originа затем гарантирует, что каждая ветвь в стеке имеет конечную часть предыдущего слоя в журнале фиксации. Ветви перебазируются по порядку, от магистрали вверх.

Если запрос на вытягивание ветви был объединен, перебаза автоматически переключается в --onto режим для правильного воспроизведения фиксаций в верхней части целевого объекта слияния.

Если конфликт повторной базы возникает, операция приостанавливает и выводит конфликтующие файлы с номерами строк. Устраните конфликты, наведите их на git addстадию, а затем продолжайте работу --continue. Чтобы отменить всю перебазу, используйте --abort для восстановления всех ветвей в их состоянии перед повторной базой.

FlagОписание
--downstackТолько перебазировать ветви из магистрали в текущую ветвь
--upstackТолько перебазировать ветви из текущей ветви в верхнюю часть
--no-trunkПропустить магистраль. Только перебазировать ветви стека на другую, без получения и без перебазы магистрали.
--continueПродолжить повторную базу после разрешения конфликтов
--abortОтмена повторной базы и восстановление всех ветвей в их состоянии перед повторной базой
--remote <name>Удаленное получение из (по умолчанию для автоматического обнаружения удаленного)
--committer-date-is-author-dateЗадайте дату фиксации на дату автора во время повторной базы данных. Псевдоним: --preserve-dates.
ArgumentОписание
[branch]Целевая ветвь (по умолчанию используется текущая ветвь)

Примеры:

# Rebase the entire stack
gh stack rebase

# Only rebase branches below the current one
gh stack rebase --downstack

# Only rebase branches above the current one
gh stack rebase --upstack

# Rebase stack branches without pulling from or rebasing with trunk
gh stack rebase --no-trunk

# After resolving a conflict
gh stack rebase --continue

# Abort rebase and restore everything
gh stack rebase --abort

# Rebase and preserve committer date as author date
gh stack rebase --committer-date-is-author-date

gh stack push

Отправьте активные ветви в текущем стеке в удаленный.

gh stack push [flags]

Отправляет каждую активную ветвь, за исключением объединенных и очередных ветвей, в одном git pushслучае с помощью явной проверки на ветвь --force-with-lease . Обновление не является атомарным. Ветви, аренду которых можно обновить, даже если другая ветвь отклонена. Исправьте отклоненную ветвь и повторите команду. Ветви, которые уже были обновлены, остаются неизменными. Эта команда не создает или обновляет запросы на вытягивание. Используйте gh stack submit для этого.

FlagОписание
--remote <name>Удаленный для отправки (по умолчанию автоматически обнаруженный удаленный)

Примеры:

gh stack push
gh stack push --remote upstream

Связывание запросов на вытягивание в стек GitHub без локального отслеживания.

gh stack link [flags] <stack-number | branch-or-pr> <branch-or-pr> [...]

Создает или обновляет стек GitHub из имен ветвей или номеров запросов на вытягивание и URL-адреса. Эта команда не создает или не изменяет состояние локального отслеживания. Он предназначен для людей, которые управляют филиалами с другими инструментами локально, например Jujutsu, Sapling или git-town, и хотят открыть стек запросов на вытягивание. См . раздел AUTOTITLE.

Аргументы в порядке стека от нижнего до верхнего. Аргументы ветви отправляются в удаленный режим автоматически перед созданием или поиском запросов на вытягивание. Для ветвей, которые уже имеют открытые запросы на вытягивание, используются эти запросы на вытягивание. Для ветвей без запросов на вытягивание новые запросы на вытягивание создаются автоматически с правильной цепочкой базовых ветвей. Существующие запросы на вытягивание, базовые ветви которых не соответствуют ожидаемой цепочке, автоматически исправляются.

Если запросы на вытягивание еще не находятся в стеке, создается новый стек. Если некоторые запросы на вытягивание уже находятся в стеке, существующий стек обновляется, чтобы включить новые запросы на вытягивание. Существующие запросы на вытягивание никогда не удаляются из стека, так как обновление является аддитивным только.

Чтобы увеличить существующий стек без перечисления запросов на вытягивание еще раз, передайте номер стека, отображаемое в пользовательском интерфейсе GitHubстека в качестве первого аргумента. Остальные аргументы добавляются в верхнюю часть этого стека. Аргументы, уже имеющиеся в стеке, пропускаются, а аргументы, принадлежащие другому стеку, отклоняются. Так как числа запросов стека и вытягивания никогда не перекрываются, числовой первый аргумент рассматривается как стек, только если он соответствует существующему стеку. В противном случае оно рассматривается как запрос на вытягивание или ветвь.

FlagОписание
--base <branch>Базовая ветвь для нижней части стека (по умолчанию используется ветвь репозитория по умолчанию). Этот флаг игнорируется при добавлении в существующий стек.
--openПометьте новые и существующие запросы на вытягивание как готовые к проверке
--remote <name>Удаленный для отправки (по умолчанию автоматически обнаруженный удаленный)

Примеры:

# Link branches into a stack (pushes, creates pull requests, creates stack)
gh stack link feature-auth feature-api feature-ui

# Link existing pull requests by number
gh stack link 10 20 30

# Link existing pull requests by URL
gh stack link https://github.com/owner/repo/pull/10 https://github.com/owner/repo/pull/20

# Add branches to an existing stack of pull requests
gh stack link 42 43 feature-auth feature-ui

# Append to the top of an existing stack by its stack number, with no need
# to list the pull requests already in stack 7 again
gh stack link 7 48 feature-ui

# Use a different base branch and mark pull requests as ready for review
gh stack link --base develop --open feat-a feat-b feat-c

gh stack merge

Объединение одного или нескольких запросов на вытягивание с накоплением одновременно.

gh stack merge [<stack-number> | <pr-number>]

Объединяет каждый запрос на вытягивание в стеке вплоть до выбранного запроса на вытягивание в базовую ветвь. Слияние — это единая операция "все" или "ничего". Если не удается объединить любой запрос на вытягивание, ни один из них не объединен.

Без аргументов команда использует активный локальный стек. Укажите номер стека для объединения стека, который вы не проверили, что является чисто удаленной операцией или укажите номер запроса на вытягивание для слияния непосредственно с этим запросом на вытягивание.

В интерактивном терминале командная строка определяет, какие запросы на вытягивание необходимо объединить, выбрать метод слияния и подтвердить. В неинтерактивном терминале или при использовании --yesвесь стек или все содержимое до указанного запроса на вытягивание объединяется без запроса, используя метод слияния, который вы последний раз использовали, если не указать его.

Перед слиянием проверяется только базовое состояние запроса на вытягивание. Каждый запрос на вытягивание должен быть открытым и не должен быть черновиком. GitHub вычисляет правила защиты ветви и репозитория при выполнении слияния, а все ошибки передаются вам.

Примечание.

Не удается обойти требования к слиянию при слиянии стека запросов на вытягивание.

Если базовая ветвь использует очередь слияния, стек добавляется в очередь, а не объединяется напрямую. Очередь выбирает метод слияния, поэтому запрос пропускает шаг метода слияния, а --merge-method``--squash``--rebase``--merge флаги игнорируются с предупреждением. Выбранные запросы на вытягивание добавляются в очередь вместе, но они объединяются как очереди, поэтому они могут приземлиться в отдельных группах, а не одновременно.

FlagОписание
--merge-method <method>Метод слияния для использования: merge, squashили rebase
--merge, , --squash``--rebaseКороткие инструкции для соответствующего метода слияния
-y, --yesСлияние без запроса на подтверждение

Примеры:

# Merge the current stack, choosing pull requests interactively
gh stack merge

# Merge a stack you do not have checked out, by stack number
gh stack merge 7

# Merge everything up to and including pull request 42
gh stack merge 42

# Merge the whole current stack without prompting, squashing commits
gh stack merge --yes --squash

Команды навигации перемещают вас между ветвями в текущем стеке без необходимости запоминать имена ветвей. Нижняя часть стека является ветвью, ближе всего к магистрали, а верхняя — ветвь от нее. up двигается от магистрали и down движется к нему.

Все команды навигации зажимают границы стека. Перемещение вверх с верхней или вниз вниз ничего не делает и отображает сообщение.

gh stack switch

Интерактивный переход на другую ветвь в стеке.

gh stack switch

Отображает интерактивный элемент выбора всех ветвей в текущем стеке, упорядоченный сверху, от магистрали до нижнего, близкого к магистрали, с их номером позиции. Выберите ветвь, чтобы извлечь ее.

Для этой команды требуется интерактивный терминал.

Примеры:

gh stack switch
#    → Select a branch in the stack to switch to
#      5. frontend
#      4. api-endpoints
#      3. auth-layer
#      2. db-schema
#      1. config-setup

gh stack up

Двигайтесь к верхней части стека, от магистрали.

gh stack up [n]

Перемещается вверх n по ветвям, по умолчанию — 1. Если вы находитесь в ветви магистрали, up перейдите в первую ветвь стека.

Примеры:

# Move up one layer
gh stack up

# Move up three layers
gh stack up 3

gh stack down

Двигайтесь вниз к нижней части стека, в сторону магистрали.

gh stack down [n]

Перемещается вниз n ветвей, по умолчанию — 1.

Примеры:

# Move down one layer
gh stack down

# Move down two layers
gh stack down 2

gh stack top

Перейдите в верхнюю часть стека.

gh stack top

Проверяет ветвь с магистрали.

gh stack bottom

Переход к нижней части стека.

gh stack bottom

Проверяет ветвь ближе всего к магистрали.

gh stack trunk

Перейдите в магистральную ветвь.

gh stack trunk

Проверяет ветвь магистрали текущего стека, например main. Вы должны находиться в ветви, которая входит в стек.

Utilities

gh stack alias

Создайте короткий псевдоним команды, чтобы можно было ввести меньше.

gh stack alias [flags] [name]

Устанавливает небольшой скрипт-оболочку, ~/.local/bin/ в который пересылает все аргументы gh stack. Псевдоним по умолчанию — gsэто имя, но можно выбрать любое имя, передав его в качестве аргумента. После установки вместо него gh stack pushможно запуститьgs push.

В Windows автоматическое создание псевдонима не поддерживается. Команда выводит инструкции вручную по созданию пакетного файла или функции PowerShell.

FlagОписание
--removeУдаление созданного ранее псевдонима

Примеры:

# Create the default alias (gs), so that "gs push" and "gs view" both work
gh stack alias

# Create a custom alias
gh stack alias gst

# Remove an alias
gh stack alias --remove
gh stack alias --remove gst

gh stack feedback

Поделитесь отзывом о gh stack расширении.

gh stack feedback [title]

Открывает обсуждение в репозитории gh-stack , чтобы отправить отзыв. При необходимости можно указать название для записи обсуждения.

Примеры:

gh stack feedback
gh stack feedback "Support for reordering branches"

Переменные среды

VariableValuesОписание
GH_STACK_THEME
auto(по умолчанию), light``darkУправляет цветовой палитрой интерактивных экранов для submitвыходных view``modifyданных команд и всех цветных команд. Цвета адаптируются к фону терминала автоматически. Установите эту переменную для принудительной светлой или темной палитры, если терминал не сообщает о своем фоновом режиме, что может произойти в некоторых SSH или tmux настройках.
# Force the light palette for one command
GH_STACK_THEME=light gh stack view

Коды выхода

КодЗначение
0Success
1Общая ошибка
2Не в стеке или стеке не найден
3Конфликт повторной базы данных
4
GitHub Сбой API
5Недопустимые аргументы или флаги
6Требуется диамбигуация, так как ветвь принадлежит нескольким стекам
7Перебаза уже выполняется
8Стек заблокирован другим процессом
9Запросы на вытягивание с накоплением не включены для этого репозитория
10Изменение прерванного сеанса и требуется восстановление

Дополнительные материалы