`gh stack submit` fails on forks by attempting to create PRs on upstream repository (`Head sha can't be blank`)
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
從 gh stack submit 入口開始,追蹤 repository 解析流程,包括 gh-stack.remote 和設定的預設 repository,直到 GraphQL createPullRequest 呼叫。使用 fork 設定和 GH_DEBUG=1 進行重現。完成標準是堆疊 PR 的建立目標為 fork,或明確支援預期的 head repository,且不再出現空白 SHA 錯誤。
由索引模型根據 Issue 內容生成。
描述
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
- 主要語言
- Go
- 星號
- 1.6k
- 分支
- 78
- 平均合併
- 4 天 15 分鐘
- 30 天內合併 PR
- 17
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
github/gh-stack 的其他 Issue
-
難度 2/5 1-3 小時 新手友好度 85/100
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 92/100
維護者通常 1 天內回覆
-
feature request topic: cli - general
難度 2/5 1-3 小時 新手友好度 68/100
維護者通常 1 天內回覆
-
feature request topic: auto-merge
難度 2/5 1-3 小時 新手友好度 68/100
維護者通常 1 天內回覆
-
bug topic: docs
難度 1/5 1 小時以內 新手友好度 68/100
github/gh-stack#429 · 3 個 reaction ·
維護者通常 1 天內回覆
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 76/100
維護者通常 1 天內回覆
-
難度 1/5 1-3 小時 新手友好度 90/100
FootprintAI/Containarium#2338 ·
維護者通常 1 天內回覆
-
[Bug]: core doesn't build standalone on dev since a17068054 (go-mp3 require dropped, go.sum pruned)未關閉
難度 2/5 1-3 小時 新手友好度 78/100
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 85/100
SagerNet/sing-openvpn#11 ·
-
priority: P3 type: devops
難度 2/5 1-3 小時 新手友好度 75/100
jiegui2025/hwspec#57 ·
維護者通常 1 天內回覆