所以我最近读了这个blog post关于Github PR的堆叠差异,并一直试图遵循它。我遇到了一个问题,但我想要做一些堆积如山的PR,为此我无法访问上游回购,因此我无法推送任何分支。我在我的分叉回购中创建了一个初始分支,并开放了一个PR来对抗上游回购的主人。然后我创建了另一个以前一个分支为分支的分支。我做了一些代码更改,我想以第一个分支作为基础打开第二个PR,但我只能对自己的分叉回购而不是上游回购。有没有人遇到类似的问题?在过去,我可以访问上游回购,所以这不成问题,因为我可以将分支推向上游。我只是不确定在没有上游访问权限的情况下可能的解决方法。您可以使用分支存储库中的分支作为Github PR针对上游的基本分支吗?
回答
然后我创建了另一个分支与该分支作为我的基地。我做了一些代码更改,我想开第二PR我的第一个分支为基础,但我只能这样做对我自己的分叉回购,而不是上游回购
是的,那是预期的:你比较你的针对上游分支进行工作,而您的尚未合并到原始回购中:它只存在于您的分支中。
一种解决方法是:
- 创建从上游/主机(从原始回购的一个分支的意思)
git cherry-pick
(which is to say duplicate)从第一分支的提交,- 添加工作中的第二分支你的第二个分支,推送,为您的叉子
- 从叉子使你的PR
由于OP的结论是:
它并没有完全实现我的想法,因为PR包含了第一个分支的变化。
我认为这个问题最终是Github不允许我在PR上打一个分支,而PR已经打开的分支。
这当然是有道理的,因为该分支尚未合并到上游,因此不存在于上游回购仓库中,但似乎禁止了上游回购堆叠请求的可能性,推到。
我同意:理想情况下,PR应该独立于其他PR应用:维护者选择并选择哪些要接受,哪些拒绝。
我上面描述的是一种解决方法,但最终不是最佳实践。
的OP补充说:
我决定做的是开放我的第一个PR对上游主,我后来PR的反对我的分叉回购之前的分支。
然后,当一个PR登陆时,我可以轻松更改下一个PR的基本分支作为上游主设备,现在包含我以前的PR的更改。
那的确是更新对一个更新的起点/主现有的PR(现在包括其他合并PR)
感谢您的建议!我会试一试。看起来这可能会遇到问题,因为我在第一步创建的第二个分支将仅存在于本地。因此,我将无法将其作为我公关的基地。还没有尝试过,所以我可能会错过一些东西。 – jeromefroe
@jeromefroe是的,为了做PR,你需要先把你的第二个分支从你的本地仓库推到你的叉子上。这就是我在答案中的“推到你的叉子”的意思。 – VonC
我试过你的解决方法,它并没有完全实现我所想的,因为PR包含了第一个分支的更改。我相信这个问题最终是Github不会让我成为PR公司的上游分支机构,因为PR已经开放了。这当然是有道理的,因为该分支尚未合并到上游,所以在上游回购中不存在,但似乎禁止了上游回购的堆积拉动请求的可能性,这是人们无法推动的。 – jeromefroe
- 1. GitHub中的分支分支
- 2. github分支的本地分支ontop
- 3. Bitbucket/Github存储库分支和主分支
- 4. 如何将git master分支重置为分支存储库中的上游分支?
- 5. 在Github上更新分叉存储库的多个分支
- 6. 基于两个未分支分支在分支上工作
- 7. Github将主人移动到PR分支?
- 8. 如何github上标记您的分支
- 9. git分支列表与上游分支
- 10. 在github的主分支以外的分支上搜索提交
- 11. 推分支github上
- 12. Git导入存储库作为分支
- 13. 获取GitHub存储库的存储库默认分支
- 14. 公共存储库的本地分支
- 15. 在github中重命名基本分支
- 16. git创建分支上游标记的本地分支
- 17. 从Gitlab上的问题创建新分支时使用哪个分支?我可以选择源分支吗?
- 18. TFS分支后,可以更新分支
- 19. Github将另一个分支合并到您的本地主分支
- 20. 将分支推送到github上的新存储库
- 21. fatal:您当前分支的上游分支与当前分支的名称不匹配
- 22. 更改Github上PR的源代码分支
- 23. 查看Jenkins中储存库的分支
- 24. Github中的分支策略
- 25. github中的分支叉
- 26. Github:我如何在PR本地合并时为PR保留清洁分支?
- 27. 将一个Git存储库分割成多个分支成为分支
- 28. 使用svn作为Mercurial主分支的镜像存储库
- 29. 更好地分支或分支Mercurial存储库?
- 30. bazaar共享存储库vs同位分支vs堆叠分支
如果我理解正确的话,你创建了叉的一个分支,然后创建了一个正确的方法公关从那到主。如果你这样做,那么在上游没有“新”分支,但只有你的分叉。我不太清楚问题的第二部分,因为你为什么要将新的改变合并到新的分支?如果您对该分支做了更多更改,然后在分支上的同一分支上提交,并且您的PR将更新或创建新的PR(如果旧PR已关闭)或更好地创建新分支(基于旧PR /掌握如果prev。PR已合并)在您的叉子上,并创建一个新的PR – whoisthis
所以我想合并新的变化成upsteam主,但为了帮助使PR更具可读性我想有多个PR,每个PR构建在最后。因此,例如,第一个PR可能会引入我打算使用的接口,第二个PR可能会引入这些接口的具体实现,第三个PR可能会在回购的其他地方使用这些实现。因此,我不想将我的更改添加到我的第一个公关中,因为这将会形成一个大公关。另一方面,如果我从我的新分支创建一个新的公关,它将包含我第一个公关中的更改。 – jeromefroe