Git 保持多个遥控器同步的正确方法?

Git proper method to keep multiple remotes in sync?

这是设置。我有一个主 github 存储库,我称之为 team/repo,还有一个分支,我称之为 me/repo。在 me/repo 上,我在 feature 分支中做了一些更改(还有一个 master 分支),并在 team/repo 中创建了一个对 develop 分支的拉取请求.从 team/repo 中的 develop 分支(包括我刚刚提出的拉取请求)返回到 me/repo 中的 master 分支的所有更改的正确方法是什么?

现实中没有“对的方法”,只有不同的strategies/flows团队采用的方法不同

Gitflow分支管理模型?

听起来您可能正在遵循 Gitflow 分支管理模型。在 Gitflow 下,您有一个 master 分支,这是一个半不可触及的提交集,代表已发布代码的永久副本。您还有一个活跃的 develop 个分支(可能不止一个)、release 个分支和 feature 个分支。

正在同步分叉

因为你有一个 repo 的分支,它也在 Github 上(如果我没理解错的话),然后你的 PC 上也会有一个本地 repo。通常,您会将分支 (me/repo) 设置为标准 origin 遥控器,然后将原始 team/repo 设置为名为 upstream 的遥控器。当您想要更新您的分叉时,您可以从团队存储库 (upstream) 中下拉,然后将这些更改推送到您的分叉 (origin)。如果这部分有什么问题,请参阅This Answer on "Syncing A Fork"

您可能已经完成了所有这些设置 - 不清楚。如果不是以这种方式设置,则以下内容可能偏离目标。

如何获取从 A 到 B 的更改?

现在是答案的核心 - 如何获得从 local/fork ( 到 team/repo(或 upstream,原始团队中央仓库)的更改。

首先考虑是否需要分叉。可能是,但除非存在信任问题或者这是一个大型分布式(可能是多团队)项目或开源项目,否则可能不需要分叉。如果可以,请考虑直接在 team/repo 中的功能分支中工作,避免分叉增加的复杂性。

假设需要分叉,您使用 feature 分支,并在 develop 分支上对 team/repo 执行拉取请求。这很好,并且会将您的更改作为一系列提交中的变基,或作为组合的单个提交。

从这里开始,how/when 到 master 的变化完全取决于您团队的工作流程。如果按照Gitflow开发,没必要立马去master。您应该将 feature 分支从 develop 分支出来,而不是从 master 分支出来。在你的 PR 进入 develop 之后,只需将新的 develop 提交拉入你的本地仓库,然后向上推送到你的分支,然后创建一个新的 feature 分支 develop 或继续在您现有的 feature 分支工作,直到需要下一个 PR。

最终,团队会将 develop 次提交合并到 master 中,其中一些可能最终也会出现在 release 个分支中。如果是这样,有时您可能需要分支 masterrelease 分支而不是 develop,但新功能应该从 develop 分支出来,不是 masterdevelop 会合并到 master 并从 master 拆分出来)。

您的团队可能会以不同的方式处理这个问题,但这应该会让您了解它的工作原理并让您提出正确的问题。重点是这里不一定有问题,你的更改需要立即进入master。如果他们确实将其放入 master,您仍然会将它们从 upstream 中拉下来,尽管您可能需要检查您的本地 master 并将其合并到 upstream/master 以快速-转发它,然后将它推到你的叉子上。