Sobre o projeto
gh stack é uma extensão da CLI do GitHub que gerencia branches e pull requests empilhados. PRs empilhados dividem uma grande alteração em uma cadeia de pull requests pequenos e revisáveis que se baseiam uns nos outros; esta ferramenta automatiza a criação de branches, mantém os branches rebaseados, define os branches base corretos dos PRs e navega entre as camadas.
A instalação é feita via `gh extension install github/gh-stack` e requer a CLI do GitHub v2.0+. Uma skill opcional pode ser instalada para agentes de codificação de IA.
Modelo central: uma stack é uma lista ordenada de branches, cada um baseado no branch abaixo dele, com o inferior baseado em um branch tronco (geralmente main). Os metadados da stack são armazenados localmente em `.git/gh-stack` como JSON, com o estado do rebase em um arquivo separado.
Os comandos incluem:
- init: inicializa uma stack, opcionalmente adotando branches existentes, com um tronco configurável.
- add: cria um novo branch no topo da stack, com opções para stage e commit de alterações.
- checkout: faz checkout de uma stack por número da stack, número do PR, URL do PR ou nome do branch, incluindo um seletor interativo para stacks locais e remotas.
- rebase: busca e executa rebases em cascata na stack, com escopo downstack/upstack/sem-tronco e tratamento de continue/abort.
- modify: uma UI de terminal interativa para descartar, dobrar, inserir, renomear e reordenar branches.
- sync: busca, reconcilia a stack remota, faz fast-forward do tronco, rebase em cascata, push, sincroniza o estado dos PRs, vincula a stack e opcionalmente remove branches mesclados.
- push: envia branches ativos com verificações de force-with-lease por branch.
- submit: envia branches e cria ou atualiza PRs e a stack do GitHub, com editor interativo ou modo automático.
- link: cria ou atualiza uma stack do GitHub a partir de nomes de branches ou números de PRs sem rastreamento local, útil com outras ferramentas locais de branches.
- merge: mescla um ou mais PRs empilhados em uma operação de tudo-ou-nada, com opções de método de mesclagem e suporte a fila de mesclagem.
- view: exibe branches da stack, ordenação, links de PRs e commits recentes, com saída curta e JSON.
- unstack/delete: remove uma stack do rastreamento local e/ou do GitHub.
- Comandos de navegação (up, down, top, bottom) movem entre branches na stack atual.
O README documenta flags, exemplos, pré-condições e comportamentos como tratamento de divergências e interações com a fila de mesclagem em detalhes.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.