GitHub不允许fork原仓库时 如何将自有仓库提交PR到上游仓库
无法识别为fork仓库时向原仓库提交PR的解决方案
方法1:直接拼接PR跳转地址(最快可用)
GitHub的PR创建页支持通过URL参数直接指定来源分支,不需要仓库有fork关联:
- 替换下述地址中的占位符,直接在浏览器访问即可进入原仓库的PR创建页:
示例:原仓库是https://github.com/<原仓库所有者名>/<原仓库名>/pull/new/<你的GitHub用户名>:<你存放修改的分支名>torvalds/linux,你的用户名是testuser,修改分支是fix-xxx-bug,对应访问地址为https://github.com/torvalds/linux/pull/new/testuser:fix-xxx-bug - 进入页面后正常填写PR标题、说明提交即可。
方法2:对齐提交历史后手动选择分支
如果需要长期贡献,建议先对齐上游提交历史,后续可以正常在页面选择分支:
- 先确认本地已经添加原仓库为上游源:
# 查看现有远程源 git remote -v # 没有的话添加上游 git remote add upstream https://github.com/<原仓库所有者名>/<原仓库名>.git - 将你的修改分支变基到上游最新版本,避免提交冲突:
# 拉取上游最新提交 git fetch upstream # 切换到你的修改分支 git checkout <你的修改分支名> # 变基到上游主分支(主分支一般为main或master,根据原仓库实际情况替换) git rebase upstream/<原仓库主分支名> # 若出现冲突,解决冲突后执行git add <冲突文件>,再运行git rebase --continue完成变基 # 强制推送变基后的分支到你自己的远程仓库 git push -f origin <你的修改分支名> - 回到原仓库的
New pull request页面,点击Compare across forks,在「头部分支(head repository)」下拉框选择你的仓库,分支选择你修改后的分支即可创建PR。如果下拉框搜不到你的仓库,直接用方法1的拼接地址即可。
常见误区说明
git request-pull是Git原生命令,仅生成纯文本格式的PR说明内容,不会在GitHub平台创建PR记录,你之前执行成功没有页面展示是正常预期行为。- GitHub是否标记你的仓库为fork,不影响你提交PR的功能,只要你的分支提交历史和原仓库同源,就可以通过上述两种方法正常提交PR。
内容的提问来源于stack exchange,提问作者AbsolutelyFreeWeb
相关产品推荐
相关产品推荐

