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.