Skip to main content

Comandos da CLI de solicitações de pull empilhadas

Localize cada comando, sinalizador e código de saída para a gh stack extensão em GitHub CLI.

Observação

Esse recurso está em versão prévia pública e está sujeito a alterações.

A extensão gh stack para GitHub CLI cria e gerencia pilhas de pull requests a partir do seu repositório local. Para obter uma introdução às pilhas, consulte Solicitações de pull empilhadas.

Installation

gh extension install github/gh-stack

A extensão requer GitHub CLI (gh) a versão 2.0 ou posterior.

Observação

A gh stack extensão usa sua GitHub CLI autenticação. Se você ainda não se autenticou, execute gh auth login.

Resumo do comando

CommandPurpose
gh stack initInicialize uma nova pilha no repositório atual.
gh stack addAdicione uma nova ramificação no topo da pilha atual.
gh stack viewExiba a pilha atual.
gh stack checkoutConsulte uma stack pelo número da stack, pelo número do pull request, pela URL do pull request ou pelo nome da branch.
gh stack modifyReestruturar interativamente a pilha atual.
gh stack unstackRemova uma pilha do rastreamento local e desempilhe-a em GitHub.
gh stack submitTransmita todas as ramificações e, em seguida, crie ou atualize as solicitações de pull e a pilha em GitHub.
gh stack syncFazer fetch, rebase, push e sincronizar o estado da pull request em um único comando.
gh stack rebaseFaça pull do remoto e execute um rebase em cascata em toda a pilha.
gh stack pushTransmita as ramificações ativas na pilha atual para o remoto.
gh stack linkVincule pull requests em uma pilha no GitHub sem rastreamento local.
gh stack mergeMescle uma ou mais solicitações de pull empilhadas ao mesmo tempo.
gh stack switchAlterne interativamente para outra ramificação da pilha.
gh stack upMova-se para cima em direção à parte superior da pilha, longe do tronco.
gh stack downMova-se para baixo em direção à parte inferior da pilha, em direção ao tronco.
gh stack topVá para o topo da pilha.
gh stack bottomIr para o final da pilha.
gh stack trunkVá para a ramificação do tronco.
gh stack aliasCrie um alias de comando curto para que você possa digitar menos.
gh stack feedbackCompartilhe comentários sobre a gh stack extensão.

Gerenciamento de pilhas

gh stack init

Inicialize uma nova pilha no repositório atual.

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

Inicializa uma nova pilha localmente. No modo interativo (sem argumentos), o comando solicita um nome de branch e oferece o uso do branch atual como a primeira camada.

Quando você fornece nomes explícitos de ramificações, as ramificações existentes são reconhecidas automaticamente, e as ramificações ausentes são criadas. O tronco usa como padrão o branch padrão do repositório, a menos que você o substitua por --base.

O comando habilita git rerere automaticamente, para que as resoluções de conflito sejam lembradas durante as trocas de base.

FlagDescription
-b, --base <branch>Ramo principal da pilha (o padrão é o ramo padrão do repositório)

Exemplos:

# 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

Adicione uma nova ramificação no topo da pilha atual.

gh stack add [flags] [branch]

Para uma pilha existente, cria um novo branch no HEAD atual, adiciona-o à parte superior da pilha e faz o check-out. Você deve executar esse comando enquanto estiver no branch mais alto de uma pilha. Se você não fornecer um nome de branch, o comando solicitará um.

Quando você executa o comando interativamente de um branch que não faz parte de uma pilha, add oferece a inicialização de uma nova pilha. O nome da ramificação que você informar, ou o nome gerado automaticamente, se torna a primeira camada. Se você não fornecer um nome, serão usados os prompts padrão init.

Opcionalmente, você pode preparar alterações e criar uma confirmação como parte do add fluxo. Quando você fornece -m sem um nome de ramificação explícito, o nome da ramificação é gerado automaticamente no formato de data e slug, como 03-24-add_login.

FlagDescription
-A, --allPreparar todas as alterações, incluindo arquivos não rastreados. Requer -m.
-u, --updateAlterações de estágio somente em arquivos rastreados. Requer -m.
-m, --message <string>Criar uma confirmação com essa mensagem antes de criar o branch

Observação

-A e -u são mutuamente exclusivos.

Exemplos:

# 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

Exiba a pilha atual.

gh stack view [flags]

Mostra todas as ramificações na pilha, sua ordem, links de pull request e o commit mais recente com um timestamp relativo. Por padrão, o comando abre uma exibição de tela inteira em um terminal interativo e imprime a saída estática em um terminal não interativo. As opções --short e --json imprimem diretamente na saída padrão em ambos os ambientes.

FlagDescription
-s, --shortSaída compacta de uma linha por branch
--jsonDados da pilha de saída como JSON

Exemplos:

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

gh stack view --short usa hiperlinks OSC 8 para números de pull request quando o terminal oferece suporte a eles. Caso contrário, a URL completa será mostrada para copiar e colar. Defina GH_STACK_HYPERLINKS=1 ou GH_STACK_HYPERLINKS=0 para substituir a detecção do terminal.

gh stack checkout

Consulte uma stack pelo número da stack, por um número de pull request, pela URL do pull request ou pelo nome da branch.

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

Um número isolado é interpretado primeiro como um número de pilha ou de solicitação de pull. Estes são identificadores no escopo do repositório mostrados na UI GitHub. Se nada corresponder ao número, ele será tratado como um nome de branch.

Quando você se refere a uma pilha remota, o comando busca a pilha em GitHub, extrai as ramificações e configura a pilha no ambiente local. Se a stack já existir localmente e corresponder, o comando muda para a branch. Se as pilhas locais e remotas tiverem composições diferentes, você será solicitado a resolver o conflito.

Quando você fornece um nome de branch, o comando verifica as pilhas controladas localmente primeiro. Se o branch não estiver sendo rastreado localmente, o comando procurará o branch em stacks remotas e baixará a stack correspondente. Se mais de uma stack corresponder, use o número da stack ou da pull request para escolher uma delas explicitamente.

Quando você executa o comando sem argumentos em um terminal interativo, ele primeiro verifica se o branch atual pertence a uma stack no remoto que não é rastreada localmente e oferece a opção de fazer checkout dela. Se não houver uma correspondência única, ou se você recusar, ele abre um seletor pesquisável listando todas as stacks disponíveis para você, tanto as rastreadas localmente quanto as que existem apenas em GitHub. Cada linha mostra o número da pilha, sua ramificação inferior e superior, a ramificação base, uma barra de status que resume quantos de seus pull requests estão mesclados, abertos, fechados ou ainda não enviados, bem como se a pilha está disponível localmente ou apenas no repositório remoto. Filtre com as guias All, Local e Remote ou digite / para pesquisar. Pilhas totalmente mescladas são omitidas. Selecionar uma pilha somente remota realiza a clonagem dela localmente antes de alternar para ela.

Exemplos:

# 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
gh stack checkout feature-auth

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

gh stack modify

Reestruturar interativamente a pilha atual.

gh stack modify [flags]

Abre uma interface interativa de terminal para reestruturar uma pilha. Todas as alterações são preparadas na interface e aplicadas juntas quando você pressiona Ctrl+S. Não é possível modificar branches de pull requests mesclados.

FlagDescription
--continueContinuar depois de resolver conflitos
--abortCancelar a sessão de alteração e restaurar a pilha ao estado em que estava antes da execução do comando

Pré-condições

O comando verifica essas condições antes de abrir a interface:

  1. Você deve ter uma pilha ativa marcada localmente.
  2. Sua árvore de trabalho deve estar limpa, sem alterações não confirmadas.
  3. Nenhuma rebase está em andamento.
  4. Nenhuma solicitação de pull na pilha está na fila para mesclagem.
  5. O histórico de confirmação deve ser linear, sem confirmações de mesclagem e sem ramificações divergentes.

Operations

OperaçãoKeyEffect
Drop
xRemova o branch e suas confirmações da pilha. O branch local e a solicitação de pull associada são preservados.
Dobrar para baixo
dIncorpore commits à ramificação abaixo, em direção ao ramo principal. O ramo dobrado é removido da pilha.
Dobrar
uAbsorva as confirmações na ramificação acima, afastando-as do tronco. O ramo dobrado é removido da pilha.
Inserir abaixo
iInsira um novo ramo vazio abaixo do cursor, em direção ao tronco.
Inserir acima
IInsira um novo ramo vazio acima do cursor, afastado do tronco.
Mova para baixoShift+Reordene a ramificação para baixo, em direção ao tronco.
Subir
Turno+Reordene a ramificação para cima, longe do tronco.
Rename
rRenomeie a ramificação, usando um prompt na linha.
Undo
zDesfazer a última ação em etapas.

Fase de aplicação

Ao pressionar Ctrl+S, as alterações preparadas são aplicadas renomeando ramificações, inserindo novas ramificações, combinando ou removendo ramificações e executando um rebase em cascata para criar um histórico linear de commits com o estado da pilha desejado.

Se ocorrer um conflito de rebase, você poderá:

  • Resolva os conflitos, prepare os arquivos e execute gh stack modify --continue.
  • Execute gh stack modify --abort para anular a operação e restaurar a pilha para seu estado anterior.

Depois de modificar

Se você já criou uma pilha de pull requests no GitHub, execute gh stack submit para enviar os branches atualizados e recriar a pilha. A pilha antiga é substituída automaticamente.

Exemplos:

# 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

Remova uma pilha do rastreamento local e desempilhe-a em GitHub. Esse comando também está disponível como gh stack delete.

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

Sem argumento, o comando tem como destino a pilha ativa, que é a pilha que contém o branch de check-out atualmente. Ele desempilha a pilha em GitHub e remove o rastreamento local.

Forneça um número da pilha, o identificador mostrado na interface da pilha em GitHub, para desempilhar uma pilha específica. Isso funciona de qualquer lugar no repositório, tenha sido feito check-out da pilha localmente ou não, porque a pilha é desempilhada diretamente pela API GitHub. Quando a pilha também está disponível localmente, o rastreamento local dela também é removido.

Pull requests que foram mesclados, estão sendo mesclados ou estão na fila para mesclagem não podem ser removidos de uma pilha no GitHub e continuam fazendo parte da pilha. Quando cada solicitação de pull é removida, a pilha é dissolvida e qualquer rastreamento local é removido. Quando algumas pull requests continuam empilhadas, a pilha é mantida e o rastreamento local, se houver, permanece inalterado. Use --local para ignorar a operação remota e remover apenas o acompanhamento local.

Esse comando é útil quando você precisa reestruturar uma pilha removendo um branch, inserindo um branch, reordenando branches, renomeando branches ou fazendo outras alterações grandes. Depois de desempilhar, use gh stack init para recriar a pilha com a estrutura desejada. As ramificações existentes são adotadas automaticamente.

FlagDescription
--localRemova apenas a stack localmente, mantendo-a em GitHub

Exemplos:

# 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

Operações remotas

gh stack submit

Transmita todas as ramificações e, em seguida, crie ou atualize as solicitações de pull e a pilha em GitHub.

gh stack submit [flags]

Cria um pull request para cada ramificação da pilha, enviando as ramificações para o repositório remoto. Depois de criar pull requests, submit cria automaticamente uma pilha no GitHub para vincular os pull requests entre si. Se a pilha já existir em GitHub, por exemplo, de uma submissão anterior, novas pull requests serão adicionadas à pilha existente.

Se cada pull request na stack já tiver sido mesclada, essa stack está completa e não pode ser estendida. Nesse caso, submit inicia automaticamente uma nova pilha com raiz no tronco para seus branches não mesclados e a cria GitHub, deixando a pilha mesclada intocada.

Em um terminal interativo, submit abre um editor de tela inteira em uma única tela.

  • Painel esquerdo. Cada ramificação sem uma pull request é incluída por padrão. Desmarque qualquer um que você não queira enviar com Ctrl+X. Como cada pull request se baseia na branch abaixo dela, ao desmarcar uma branch, você também desmarca as branches empilhadas acima dela, e, ao incluí-la novamente, também inclui de volta as branches abaixo dela das quais ela depende. As ramificações que já têm uma solicitação de pull, seja aberto, em rascunho, na fila ou mesclado, são mostradas para dar contexto, mas estão bloqueadas. Edite-os na Web.
  • Painel direito. Para a branch em foco, defina o título e a descrição e escolha se o pull request será aberto pronto para revisão ou como rascunho. A descrição é preenchida automaticamente com base no modelo de pull request ou nos commits do seu repositório, com visualização em Markdown. Para editar a descrição em um editor externo, pressione Ctrl+E. A extensão usa o primeiro valor não inteiro das GH_EDITORvariáveis de ambiente e EDITOR , VISUALnessa ordem. Se nenhum estiver definido, vi será usado, se disponível no seu PATH. Ao focar em uma branch bloqueada, é exibido um cartão somente de leitura com um link para seu pull request. Pressione o para abri-lo no navegador.

Pressione Ctrl+S para enviar todas as solicitações de pull incluídas ao mesmo tempo. O editor dá suporte à entrada de teclado e mouse. Passe --autoou execute o comando em um terminal não interativo, como CI, para ignorar o editor e usar títulos gerados automaticamente.

Se as ramificações já tiverem pull requests abertos, mas não existir nenhuma pilha em GitHub, você terá a opção de vincular os pull requests em uma pilha com Ctrl+B.

No editor, novos pull requests são definidos por padrão como prontos para revisão. Você pode transformar qualquer pull request em rascunho usando o botão de alternância. Com --auto, novas solicitações de pull são criadas como rascunhos, a menos que você passe --open.

FlagDescription
--autoIgnorar o editor e usar títulos de pull request gerados automaticamente
--openCriar novas solicitações de pull como prontas para revisão em vez de rascunhos e marcar solicitações de pull existentes como prontas para revisão
--remote <name>Remoto para o qual fazer push (usa por padrão o remoto detectado automaticamente)

Exemplos:

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

gh stack sync

Fazer fetch, rebase, push e sincronizar o estado da pull request em um único comando.

gh stack sync [flags]

Sincroniza toda a pilha.

  1.           **Fetch.** Busca as alterações mais recentes de `origin`.
    
  2. Sincronize o stack remoto. Espelha a pilha em GitHub localmente. Quando as solicitações de pull foram adicionadas à pilha GitHub, para que o remoto esteja à frente da pilha local, suas ramificações são puxadas para baixo e acrescentadas à pilha local automaticamente. Quando as stacks local e remota realmente tiverem divergido, por exemplo, porque você adicionou uma ramificação localmente enquanto pull requests diferentes foram adicionados à stack em GitHub, será solicitado que você resolva a divergência. Consulte pilhas divergentes. Em um terminal não interativo, uma divergência interrompe a sincronização, e nada é enviado nem atualizado.
  3.           **Tronco de avanço rápido.** Encaminha rapidamente a ramificação do tronco para corresponder ao remoto. Esta etapa é ignorada se as ramificações tiverem divergido.
    
  4. Rebase em cascata. Faz rebase de todos os branches da pilha sobre seus pais atualizados, mas somente se o trunk tiver mudado. Se um conflito for detectado, todas as ramificações serão restauradas ao seu estado original, e você será orientado a executar gh stack rebase para resolver os conflitos interativamente.
  5. Empurre. Envia todas as ramificações, usando --force-with-lease caso tenha ocorrido um rebase.
  6. Solicitações de pull de sincronização. Sincroniza o estado dos pull requests de GitHub e informa o status de cada pull request.
  7. Sincronize a pilha. Vincula os pull requests abertos da stack em uma stack no GitHub, criando o objeto de stack remota se ele ainda não existir ou atualizando-o se a stack estiver parcialmente formada. Isso só acontece quando existem duas ou mais solicitações de pull. A sincronização nunca abre solicitações de pull. Use gh stack submit para isso.
  8. Podar. Em terminais interativos, solicita a exclusão de ramificações locais de solicitações de pull mescladas. Use --prune para podar automaticamente.

Uma atualização remota limpa, em que as solicitações de pull são adicionadas na parte superior da pilha local, é retirada automaticamente sem solicitação, portanto sync é seguro executar na automação. A sincronização só é solicitada quando as pilhas realmente divergiram.

Pilhas divergentes

Quando nenhuma pilha é um prefixo limpo da outra, por exemplo, porque você adicionou uma ramificação localmente enquanto solicitações de pull separadas foram adicionadas à mesma pilha GitHub, a sincronização não pode mesclar as duas automaticamente. Em um terminal interativo, ele oferece três opções.

  •           **Use a pilha remota como a fonte da verdade.** Substitui a composição da pilha local pela remota, baixando todas as ramificações ausentes. Se você estava em uma ramificação que a pilha remota não inclui mais, você será movido para a ramificação restante mais próxima. Isso requer um estado de trabalho limpo sem alterações não confirmadas.
    
  •           **Exclua a pilha no GitHub.** Exclui o objeto de pilha em GitHub e interrompe a sincronização. Seus pull requests e branches locais permanecem inalterados, e somente a pilha em GitHub é removida. Recrie a pilha com `gh stack submit`, executando `gh stack modify` primeiro caso queira alterar a estrutura dela. Essa é a maneira de fazer com que GitHub corresponda à sua pilha local, pois `submit`, ao contrário de `sync`, também cria pull requests para quaisquer ramificações que você ainda não submeteu.
    
  • Cancelar. Aborta a sincronização sem fazer push de ramificações nem atualizar pull requests.

Em um terminal não interativo, uma divergência interrompe a sincronização, encerrando com êxito, sem enviar ramificações nem atualizar pull requests. Resolva-o desempilhando e recriando a pilha.

FlagDescription
--remote <name>Remoto para obter de e enviar para (o padrão é o remoto detectado automaticamente)
--pruneExcluir branches locais para solicitações de pull mescladas

Exemplos:

gh stack sync

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

gh stack rebase

Faça pull do remoto e execute um rebase em cascata em toda a pilha.

gh stack rebase [flags] [branch]

Busca as alterações mais recentes de origin, depois garante que cada ramificação na pilha tenha a confirmação mais recente da camada anterior em seu histórico de confirmações. As ramificações passam por troca de base em ordem, a partir do tronco de baixo para cima.

Se a solicitação de pull de uma ramificação tiver sido mesclada, a troca de base alternará automaticamente para o modo --onto para reaplicar corretamente as confirmações sobre o destino da mesclagem.

Se ocorrer um conflito de rebase, a operação pausa e imprime os arquivos conflitantes com números de linha. Resolva os conflitos, prepare-os e git addcontinue com --continue. Para desfazer todo o rebase, use --abort para restaurar todas as ramificações ao estado em que estavam antes do rebase.

FlagDescription
--downstackSomente ramificações de troca de base do tronco para a ramificação atual
--upstackSomente rebase branches do branch atual para a parte superior
--no-trunkIgnore o tronco. Faça rebase apenas das branches da pilha umas sobre as outras, sem fetch e sem rebase da branch principal.
--continueContinue o rebase após resolver os conflitos
--abortCancelar o rebase e restaurar todas as ramificações ao estado em que estavam antes do rebase
--remote <name>Remoto de onde buscar (o padrão é o remoto detectado automaticamente)
--committer-date-is-author-dateDefina a data do responsável pela confirmação como a data do autor durante a troca de base. Alias: --preserve-dates.
ArgumentDescription
[branch]Ramo de destino (o padrão é o ramo atual)

Exemplos:

# 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

Transmita as ramificações ativas na pilha atual para o remoto.

gh stack push [flags]

Faz push de cada branch ativa, excluindo branches já mescladas e enfileiradas, em um único git push, usando uma verificação explícita --force-with-lease por branch. A atualização não é atômica. Filiais cujos arrendamentos forem aprovados podem ser atualizadas mesmo que outra filial seja rejeitada. Corrija a ramificação rejeitada e execute o comando novamente. As ramificações que já foram atualizadas permanecem inalteradas. Esse comando não cria nem atualiza solicitações de pull. Use gh stack submit para isso.

FlagDescription
--remote <name>Remoto para o qual fazer push (usa por padrão o remoto detectado automaticamente)

Exemplos:

gh stack push
gh stack push --remote upstream

Vincule pull requests em uma pilha no GitHub sem rastreamento local.

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

Cria ou atualiza uma pilha em GitHub a partir de nomes de branch ou números e URLs de pull request. Esse comando não cria nem modifica nenhum estado de acompanhamento local. Ele foi projetado para pessoas que gerenciam branches localmente com outras ferramentas, como Jujutsu, Sapling ou git-town, e desejam abrir uma pilha de pull requests. Consulte Usar outras ferramentas com solicitações de pull empilhadas.

Você fornece argumentos em ordem de pilha, de baixo para cima. Os argumentos de ramificação são enviados automaticamente para o remoto antes que as solicitações de pull sejam criadas ou pesquisadas. Para as branches que já têm pull requests abertas, essas pull requests são utilizadas. Para ramificações sem pull requests, novos pull requests são criados automaticamente com o encadeamento correto da ramificação base. As solicitações de pull existentes cujo branch base não corresponde à cadeia esperada são corrigidas automaticamente.

Se as solicitações de pull ainda não estiverem em uma pilha, uma nova pilha será criada. Se algumas das solicitações de pull já estiverem em uma pilha, a pilha existente será atualizada para incluir as novas solicitações de pull. As solicitações de pull existentes nunca são removidas de uma pilha, pois a atualização apenas adiciona itens.

Para expandir uma pilha existente sem listar novamente suas solicitações de pull, passe um número de pilha, o número mostrado na interface da pilha em GitHub, como o primeiro argumento. Os argumentos restantes são adicionados ao topo dessa pilha. Os argumentos que já estão na pilha são ignorados e os argumentos que pertencem a uma pilha diferente são rejeitados. Como os números de stacks e de pull requests nunca coincidem, um argumento numérico na primeira posição é tratado como uma stack somente quando corresponde a uma stack existente. Caso contrário, ele é tratado como um pull request ou uma branch.

FlagDescription
--base <branch>Branch de base na parte inferior da pilha (o padrão é a branch padrão do repositório). Esse sinalizador é ignorado ao adicionar a uma pilha existente.
--openMarcar solicitações de pull novas e existentes como prontas para revisão
--remote <name>Remoto para o qual fazer push (usa por padrão o remoto detectado automaticamente)

Exemplos:

# 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

Mescle uma ou mais solicitações de pull empilhadas ao mesmo tempo.

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

Mescla cada solicitação de pull na pilha, até e incluindo a solicitação de pull escolhida, na ramificação base. A mesclagem é uma única operação de tudo ou nada. Se qualquer solicitação de pull não puder ser mesclada, nenhuma delas será mesclada.

Sem argumento, o comando usa a pilha local ativa. Forneça um número da pilha para mesclar uma pilha de que você não fez check-out, o que é uma operação puramente remota, ou forneça um número de solicitação de pull para mesclar diretamente até essa solicitação de pull.

Em um terminal interativo, o comando solicita que você escolha quais solicitações de pull mesclar, escolher o método de mesclagem e confirmar. Em um terminal não interativo, ou quando você usa --yes, a pilha inteira, ou tudo até a solicitação de pull que você especificar, são mesclados sem pedir confirmação, usando o último método de mesclagem que você usou, a menos que você especifique outro.

Somente o estado básico da solicitação de pull é verificado antes da mesclagem. Cada solicitação de pull deve estar aberta e não deve ser um rascunho. GitHub avalia a proteção de branch e as regras do repositório quando a mesclagem é realizada, e qualquer falha é informada a você.

Observação

Você não pode ignorar os requisitos de mesclagem ao mesclar solicitações de pull empilhadas.

Se o branch base usar uma fila de mesclagem, a pilha será adicionada à fila em vez de ser mesclada diretamente. A fila escolhe o método de mesclagem, de modo que o comando ignora a etapa de escolha do método de mesclagem, e as flags --merge-method, --squash, --rebase e --merge são ignoradas com um aviso. Os pull requests que você selecionar serão adicionados juntos à fila, mas serão mesclados à medida que a fila os processa, então podem acabar entrando em grupos separados, em vez de todos de uma só vez.

FlagDescription
--merge-method <method>Método de mesclagem a ser usado: merge, squashou rebase
--merge, --squash, --rebaseAbreviações para o método de mesclagem correspondente
-y, --yesMesclar sem solicitar confirmação

Exemplos:

# 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

Os comandos de navegação movem você entre ramificações na pilha atual sem precisar lembrar os nomes das ramificações. A parte inferior da pilha é a ramificação mais próxima do tronco e a parte superior é a ramificação mais distante dela. up se afasta do tronco, e down se move em direção ao tronco.

Todos os comandos de navegação são limitados aos limites da pilha. Mover-se para cima da parte superior ou para baixo da parte inferior não faz nada e exibe uma mensagem.

gh stack switch

Alterne interativamente para outra ramificação da pilha.

gh stack switch

Mostra um seletor interativo que lista todas as ramificações na pilha atual, ordenadas da mais alta, mais distante do ramo principal, à mais baixa, mais próxima do ramo principal, com seu número de posição. Selecione uma ramificação para fazer check-out.

Esse comando requer um terminal interativo.

Exemplos:

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

Mova-se para cima em direção à parte superior da pilha, longe do tronco.

gh stack up [n]

Move ramificações n para cima, com o padrão como 1. Se você estiver no branch do tronco, up moverá para o primeiro branch de pilha.

Exemplos:

# Move up one layer
gh stack up

# Move up three layers
gh stack up 3

gh stack down

Mova-se para baixo em direção à parte inferior da pilha, em direção ao tronco.

gh stack down [n]

Move ramificações n para baixo; o padrão é 1.

Exemplos:

# Move down one layer
gh stack down

# Move down two layers
gh stack down 2

gh stack top

Vá para o topo da pilha.

gh stack top

Verifica a ramificação mais distante do tronco.

gh stack bottom

Ir para o final da pilha.

gh stack bottom

Verifica a ramificação mais próxima do tronco.

gh stack trunk

Vá para a ramificação do tronco.

gh stack trunk

Faz checkout do branch principal da stack atual, como main. Você deve estar em uma ramificação que faz parte de uma pilha.

Utilities

gh stack alias

Crie um alias de comando curto para que você possa digitar menos.

gh stack alias [flags] [name]

Instala um script de wrapper pequeno no ~/.local/bin/ qual encaminha todos os argumentos para gh stack. O nome do alias padrão é gs, mas você pode escolher qualquer nome passando-o como um argumento. Após a instalação, você pode executar gs push em vez de gh stack push.

Em Windows, não há suporte para a criação automática de alias. O comando imprime instruções manuais para criar um arquivo em lote ou uma função do PowerShell.

FlagDescription
--removeRemover um alias criado anteriormente

Exemplos:

# 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

Compartilhe comentários sobre a gh stack extensão.

gh stack feedback [title]

Abre uma discussão no repositório de gh-stack para que você possa enviar comentários. Opcionalmente, você pode fornecer um título para a postagem de discussão.

Exemplos:

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

Variáveis de ambiente

VariableValoresDescription
GH_STACK_THEME
auto (padrão), light, darkControla a paleta de cores das telas interativas para submit, modifye view, e todas as saídas de comando coloridas. As cores se adaptam automaticamente ao plano de fundo do terminal. Defina esta variável para forçar a paleta clara ou escura quando um terminal não informa sua cor de fundo, o que pode acontecer em algumas configurações de SSH ou tmux.
GH_STACK_HYPERLINKS
0, 1Desabilita ou habilita hiperlinks OSC 8 quando a detecção de terminal está incorreta. Os terminais sem suporte mostram a URL completa por padrão.
# Force the light palette for one command
GH_STACK_THEME=light gh stack view

Códigos de saída

CodeMeaning
0Êxito
1Erro genérico
2Não está em uma pilha ou a pilha não foi encontrada
3Rebasear conflito
4
GitHub Falha na API
5Argumentos ou sinalizadores inválidos
6Desambiguação necessária, pois a ramificação pertence a várias pilhas
7Rebase já em andamento
8A stack está bloqueada por outro processo
9As solicitações de pull empilhadas não estão habilitadas para este repositório
10A sessão de modificação foi interrompida, e a recuperação é necessária

Leitura adicional