`gh stack submit` fails on forks by attempting to create PRs on upstream repository (`Head sha can't be blank`)
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 65/100
Direção de pesquisa
Comece pelo ponto de entrada gh stack submit e rastreie a resolução do repositório, incluindo gh-stack.remote e o repositório padrão configurado, até a chamada GraphQL createPullRequest. Reproduza com a configuração do fork e GH_DEBUG=1. Está concluído quando a criação de PRs empilhados tiver como destino o fork ou oferecer suporte explícito ao repositório head pretendido, sem os erros de SHA em branco.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
When using gh stack submit on a repository cloned from a fork, the command attempts to query and submit the stack against the upstream parent repository instead of the fork (or specified default repository).
Since the feature branches only exist on the fork (origin), GitHub's GraphQL API rejects the PR creation because the branches do not exist on the target upstream repository, resulting in Head sha can't be blank / Base sha can't be blank.
Executing gh repo set-default <fork-owner>/<repo> does not alter this behavior.
Environment
- OS: Windows 11 (Git Bash / MINGW64)
ghversion:gh version 2.100.0 (2026-09-03)gh stackextension version:github/gh-stack v0.1.1
Repository Setup
- origin: https://github.com/Hakzai/pokerpulsepro-tauri.git (Fork)
- upstream: https://github.com/davidelvar/pokerpulsepro-tauri.git (Parent Repo)
gh repo set-defaultis explicitly set toHakzai/pokerpulsepro-tauri.
Steps to Reproduce
- Clone a fork repository that has an
upstreamremote configured. - Create stacked branches locally and push them to
origin:
a.main->feature/branch-1->feature/branch-2 - Set the default repository using
gh repo set-default Hakzai/pokerpulsepro-tauri. - Run
gh stack submit.
Expected Behavior
gh stack submit should resolve stacked PRs against the configured default repository (Hakzai/pokerpulsepro-tauri) or provide cross-repository fork support by specifying the head branch owner/ref.
Actual Behavior
The command targets davidelvar/pokerpulsepro-tauri and fails with:
⚠ failed to create PR for feature/add-brazil-real-currency: creating PR: GraphQL: Head sha can't be blank, Base sha can't be blank, No commits between main and feature/add-brazil-real-currency, Head ref must be a branch (createPullRequest)
Debug Output (GH_DEBUG=1 gh stack submit)
Relevant log excerpts showing API requests targeting the upstream repo instead of the fork:
* Request to https://api.github.com/repos/davidelvar/pokerpulsepro-tauri/stacks?per_page=100&page=1
...
[git.exe push origin --force-with-lease=refs/heads/feature/add-brazil-real-currency:... refs/heads/feature/add-brazil-real-currency:refs/heads/feature/add-brazil-real-currency]
* Request to https://api.github.com/graphql
⚠ failed to create PR for feature/add-brazil-real-currency: creating PR: GraphQL: Head sha can't be blank, Base sha can't be blank, No commits between main and feature/add-brazil-real-currency, Head ref must be a branch (createPullRequest)
Git Config
Git config is pointing correctly the upstream to davidelvar/pokerpulsepro-tauri and the origin to the fork at Hakzai/pokerpulsepro-tauri.
submodule.active=.
remote.origin.url=https://github.com/Hakzai/pokerpulsepro-tauri.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.gh-resolved=base
branch.main.remote=origin
branch.main.merge=refs/heads/main
branch.main.vscode-merge-base=origin/main
lfs.repositoryformatversion=0
remote.upstream.url=https://github.com/davidelvar/pokerpulsepro-tauri.git
remote.upstream.fetch=+refs/heads/*:refs/remotes/upstream/*
...
branch.feature/full-backup-impl.vscode-merge-base=origin/main
branch.feature/full-backup-impl.remote=origin
branch.feature/full-backup-impl.merge=refs/heads/feature/full-backup-impl
branch.feature/add-brazil-real-currency.vscode-merge-base=origin/main
branch.feature/add-brazil-real-currency.remote=origin
branch.feature/add-brazil-real-currency.merge=refs/heads/feature/add-brazil-real-currency
branch.feature/create-winners-board.vscode-merge-base=origin/main
branch.feature/create-winners-board.remote=origin
branch.feature/create-winners-board.merge=refs/heads/feature/create-winners-board
branch.bugfix/prize-tab-not-showing-champion.vscode-merge-base=origin/main
branch.bugfix/prize-tab-not-showing-champion.remote=origin
branch.bugfix/prize-tab-not-showing-champion.merge=refs/heads/bugfix/prize-tab-not-showing-champion
branch.chore/deploy-to-github-pages.vscode-merge-base=origin/main
branch.chore/deploy-to-github-pages.remote=origin
branch.chore/deploy-to-github-pages.merge=refs/heads/chore/deploy-to-github-pages
rerere.enabled=true
rerere.autoupdate=true
gh-stack.remote=origin
- Linguagem predominante
- Go
- Estrelas
- 1.6k
- Forks
- 78
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de github/gh-stack
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
-
feature request topic: cli - general
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
feature request topic: auto-merge
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
bug topic: docs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
Todas as issues de github/gh-stack
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
prime-radiant-inc/evener#3726 ·
Mantenedores costumam responder em até 1 dia
-
[BUG] Async engine endpoint-label relationship counts include pending relationships of every typeAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
modelcontextprotocol/go-sdk#1340 ·
Mantenedores costumam responder em até 1 dia
-
🪲 bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
binwiederhier/ntfy#1992 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
MHSanaei/3x-ui#6731 · 1 comentário ·
Mantenedores costumam responder em até 1 dia