这是设置。我有一个主要的github存储库我会称之为team/repo
,也是它的一个分支,我称之为me/repo
。在me/repo
我在feature
分支做了一些变化(还有一个master
分支),并在develop
向team/repo
分支创建拉动请求。什么是从develop
的team/repo
分支(包括我刚刚提出的拉动请求)的所有变化返回master
上的me/repo
分支的正确方法是什么?
实际上,没有“适当的方法”,不同的团队只采用不同的策略/流程。
听起来你可能正在遵循Gitflow分支管理模型。在Gitflow下,你有一个master
分支,这是一个半不可触摸的提交,代表已发布代码的永久副本。您还有一个活跃的develop
分支(可能不止一个),release
分支和feature
分支。
既然你有一个repo的分支,那也是在Github上(如果我理解你的话),那么你的PC上也会有一个本地回购。通常你会将me/repo
设置为一个名为origin
的遥控器,将原始的team/repo
设置为一个名为upstream
的遥控器。当你想要更新你的前叉时,你从upstream
下拉,然后将这些更改推送到origin
。如果这部分有任何问题,请参阅This Answer on "Syncing A Fork"。
您可能已经拥有了所有这些设置 - 但它并非100%清晰。如果没有这样设置,以下可能会偏离目标。
现在回答的核心 - 如何从本地/分叉到team/repo
(或upstream
,原始团队中央回购)进行更改。
首先,考虑是否需要fork。它可能是,但除非存在信任问题或者这是一个大型分布式(可能是多团队)项目或开源,否则可能不需要fork。如果可以,请考虑直接在team/repo
中使用功能分支,并避免增加fork的复杂性。
假设需要fork,你可以使用feature
分支,并在team/repo
分支上对develop
执行拉取请求。这很好,并且可以将您的更改作为一系列提交中的rebase或作为组合的单个提交进入开发分支。
从这里开始,它完全取决于您的团队的工作流程,了解变更如何/何时变为master
。如果开发遵循Gitflow,则不需要立即转到master
。你应该从feature
分支你的develop
分支,而不是master
。在你的PR进入develop
之后,然后将新的develop
提交下拉到你的本地仓库,并推到你的前叉,并在feature
上创建一个新的develop
分支或继续在你现有的feature
分支工作,直到下一个PR是需要。
最终,该团队将develop
提交合并到master
,并且可能其中一些将最终进入release
分支。如果是这样,可能有一段时间你需要分支master
或release
分支而不是develop
,但新功能应该分支develop
,而不是master
(develop
将合并并从master
拆分)。
您的团队可能会以不同的方式处理此问题,但这应该让您了解其工作原理并让您提出正确的问题。重点是这里不一定存在问题,你的变化需要立即进入master
。如果他们确实将它放入master
,你仍然可以从upstream
将它们拉下来,尽管你可能需要检查当地的master
并将其合并到upstream/master
以快进它,然后将它推到你的前叉。